【发布时间】:2015-04-29 13:37:52
【问题描述】:
给定一个 data.table(版本 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
这真的是预期的行为还是错误? 还是我没有正确使用它?
我正在阅读“R book”,在一个示例中,他们使用 TEST[unique(Vegetation),] 并说它旨在选择植被唯一的行子集。
我希望得到类似的东西
V1 V2
1: 1 1
2: 5 2
3: 9 3
4: 13 4
5: 16 5
虽然我知道这需要指定聚合条件。
【问题讨论】:
-
你能解释一下为什么你对这个结果感到惊讶吗?
unique(V2)给出c(1, 2, 3, 4, 5)并且因为你在 i 中有这个,所以你得到了前 5 行。你可能想要它在 j 中,即TEST[,unique(V2)]? -
我就主要问题回复你
-
你似乎误解了
unique的作用。 -
使用类似语法的有点复杂的方式:
setkey(TEST,V2); TEST[J(unique(V2)),mult="first"] -
仅供参考,R 书不包括 data.tables。
标签: r unique data.table