R 在data.table中使用unique时出现意外结果
给定数据表(第1.9.5版) 我得到这个结果:R 在data.table中使用unique时出现意外结果,r,unique,data.table,R,Unique,Data.table,给定数据表(第1.9.5版) 我得到这个结果: V1 V2 1: 1 1 2: 2 1 3: 3 1 4: 4 1 5: 5 2 这真的是故意的恶作剧还是一只虫子? 或者我只是没有正确地使用它 我在读“R书”,在一个例子中,他们使用TEST[unique(vegeture),]并说它的目的是为植被选择唯一行的子集 我希望得到类似的东西 V1 V2 1: 1 1 2: 5 2 3: 9 3 4: 13 4 5: 16 5 虽然我知道这
V1 V2
1: 1 1
2: 2 1
3: 3 1
4: 4 1
5: 5 2
这真的是故意的恶作剧还是一只虫子?
或者我只是没有正确地使用它
我在读“R书”,在一个例子中,他们使用TEST[unique(vegeture),]并说它的目的是为植被选择唯一行的子集
我希望得到类似的东西
V1 V2
1: 1 1
2: 5 2
3: 9 3
4: 13 4
5: 16 5
虽然我知道这需要指定一个聚合标准。TEST[,unique(V2)]
给出了[1]12345
。因为TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug
要获得预期结果,可以执行以下操作:
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
TEST[,unique(V2)]
给出了[1]12345
。因为TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug
要获得预期结果,可以执行以下操作:
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
TEST[,unique(V2)]
给出了[1]12345
。因为TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug
要获得预期结果,可以执行以下操作:
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
TEST[,unique(V2)]
给出了[1]12345
。因为TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug
要获得预期结果,可以执行以下操作:
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
你能解释一下为什么你对这个结果感到惊讶吗
unique(V2)
给出了c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了unique
的作用。使用类似语法的一种有点复杂的方式:setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗unique(V2)
给出了c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了unique
的作用。使用类似语法的一种有点复杂的方式:setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗unique(V2)
给出了c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了unique
的作用。使用类似语法的一种有点复杂的方式:setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗unique(V2)
给出了c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了unique
的作用。使用类似语法的一种有点复杂的方式:setkey(TEST,V2);测试[J(唯一(V2)),mult=“first”]
Fyi,R手册不包括数据表。