我有一个数据表,想要挑选出其中某个变量x的值相对于另一个变量y是唯一的行。
可以通过以下方式在另一个数据集中获取按y分组的唯一x值:
dt[,unique(x),by=y]
但是我希望挑选原数据集中满足此条件的行。我不想创建一个新的data.table,因为我还需要其他变量。
那么,我在代码中需要添加什么来获取符合上述条件的
dt
行?dt <- data.table(y=rep(letters[1:2],each=3),x=c(1,2,2,3,2,1),z=1:6)
y x z
1: a 1 1
2: a 2 2
3: a 2 3
4: b 3 4
5: b 2 5
6: b 1 6
我想要的:
y x z
1: a 1 1
2: a 2 2
3: b 3 4
4: b 2 5
5: b 1 6
data.table
中的duplicated
和unique
函数中添加了by
参数,所以在下一个版本中,您可以指定要测试哪些列:unique(dt,by=c("y","x"))
。在R-Forge上的v1.8.9中。默认情况下,by
是key(dt)
,因此如果未提供by
,它将像以前一样工作。 - Matt Dowleidentical(unique(dt),dt[!duplicated(dt)])
是正确的,那为什么不使用unique
呢? - Frank