仅使用第二个键选择data.table中的行

时间:2013-05-26 17:19:00

标签: r data.table

如果我有以下内容:

a<-data.table(id=rep(letters[1:4],2), var=c(1,2,1:6), key="id,var")

我可以用

复制“通常”a[a$id=="a" & a$var==1,]
> a[.("a",1)]
   id var
1:  a   1

但是a[a$var==1,]呢?如果我使用整个"a"列更改id,我就无法得到我期望的内容:

> a[.(id,1)]
   id var
1:  a   1
2:  a   1
3:  b   1
4:  b   1
5:  c   1
6:  c   1
7:  d   1
8:  d   1

提前感谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

> a[ .(unique(id), 1),, nomatch = 0 ]
   id var
1:  a   1
2:  c   1

溶液。我们可以通过将id作为一个因素并使用级别来扫描> a<-data.table(id=factor(rep(letters[1:4],2)), var=c(1,2,1:6), key="id,var") > a[ .(levels(id), 1),, nomatch = 0 ] id var 1: a 1 2: c 1

{{1}}