在data.table

时间:2015-04-29 13:37:52

标签: r unique data.table

给出data.table(vith版本1.9.5)

TEST <- data.table(1:20,rep(1:5,each=4, times=1))

如果我这样做:

TEST[unique(V2)]

我得到了这个结果:

   V1 V2
1:  1  1
2:  2  1
3:  3  1
4:  4  1
5:  5  2

它真的是预期的行为还是一个bug? 或者我只是没有正确使用它?

我正在阅读“R书”,在一个例子中,他们使用TEST [unique(Vegetation),]并说它的目的是为植被选择一个独特的行子集。

我希望得到像

这样的东西
   V1  V2
1:  1   1
2:  5   2
3:  9   3
4:  13  4
5:  16  5

虽然我明白需要指定汇总标准。

1 个答案:

答案 0 :(得分:3)

TEST[,unique(V2)]给出[1] 1 2 3 4 5。由于TEST[1:5]应该为您提供前5行,这就是您所获得的,所以没有错误。

要获得预期结果,您可以这样做:

TEST[!duplicated(V2)]
#   V1 V2
#1:  1  1
#2:  5  2
#3:  9  3
#4: 13  4
#5: 17  5

或者这个:

TEST[, V1[1], by = V2]
#   V2 V1
#1:  1  1
#2:  2  5
#3:  3  9
#4:  4 13
#5:  5 17

或@Arun提醒我现在有一个unique的data.table方法:

unique(TEST, by="V2")
#   V1 V2
#1:  1  1
#2:  5  2
#3:  9  3
#4: 13  4
#5: 17  5