R data.table筛选器和计数唯一性

R data.table筛选器和计数唯一性,r,data.table,R,Data.table,我有以下格式的数据表 Class Value1 Value2 1 10 20 1 10 15 1 15 0 0 4 40 0 4 50 我想对Class=1的三行进行子集划分,然后计算该子集数据中Value1中的unique值的数量。 因此,在这种情况下,我的答案是2 尝试了unique([dt[,'Value1',by='Class']),但不起作用。

我有以下格式的
数据表

Class    Value1  Value2
1         10      20
1         10      15
1         15      0
0          4      40
0          4      50
我想对
Class=1
的三行进行子集划分,然后计算该子集数据中
Value1
中的
unique
值的数量。 因此,在这种情况下,我的答案是
2
尝试了
unique([dt[,'Value1',by='Class'])
,但不起作用。
谢谢!

这里是一个带有
数据的选项。表
中,我们通过在
i
中指定逻辑表达式来对行进行子集,然后使用
uniqueN
获取列“Value1”的
唯一值的计数

library(data.table)
dt[Class == 1, .(un_val1 = uniqueN(Value1))]

这里是一个带有
数据的选项。表
中,我们通过在
i
中指定逻辑表达式来对行进行子集,然后使用
uniqueN
获得列“Value1”的
唯一
值的计数

library(data.table)
dt[Class == 1, .(un_val1 = uniqueN(Value1))]

谢谢!我唯一能做的就是将
Class
存储在一个类似“Class\u var='Class'”的变量中,我看到dt[c(Class\u var)==1,(un\u val1=uniqueN(Value1))]````不同的行为方式。关于如何使用具有列名的变量获得类似的结果,有什么想法吗?@FlyingPickle为此,您可以使用多个选项,即
dt[get(class\u var)==1,
或使用
dt[eval(as.name(class\u var))==1,
谢谢!我唯一能做的就是将
存储在一个变量中,比如`Class\u var='Class'```我看到dt[c(Class\u var)==1,。(un\u val1=uniqueN(Value1))]````不同的行为方式。关于如何使用具有列名的变量获得类似的结果,有什么想法吗?@FlyingPickle为此,您可以使用几个选项,即
dt[get(class\u var)==1,
或使用
dt[eval(as.name(class\u var))==1,