我正在尝试使用.SD
在data.table
内分组,以将函数应用于特定列。我将以虹膜数据集为例。
让我们说我想知道有多少种独特的Sepal.Length
。
library(data.table)
obj="Species"
as.data.table(iris)[,length(unique(Sepal.Length)),by=.SD,.SDcols=obj]
重要的是,我可以提供.SDcols
作为对象,因为我是以编程方式进行操作的。我还想知道是否有可能使用data.table
而不是聚合和/或xtabs解决方案。
感谢任何帮助。
答案 0 :(得分:4)
我们可以直接在by
中传递'obj'并获得'Sepal.Length'(length
)的unique
个元素中的uniqueN
as.data.table(iris)[, .(uniqueLen = uniqueN(Sepal.Length)), by = obj]
如果我们想走.SDcols
路线
as.data.table(iris)[, .SD[, .(uniqueLen = uniqueN(.SD[[1]])), by = obj],
.SDcols = c(obj, "Sepal.Length")]