试图在data.table中使用.SD

时间:2019-01-01 23:32:34

标签: r data.table

我正在尝试使用.SDdata.table内分组,以将函数应用于特定列。我将以虹膜数据集为例。

让我们说我想知道有多少种独特的Sepal.Length

library(data.table)
obj="Species"
as.data.table(iris)[,length(unique(Sepal.Length)),by=.SD,.SDcols=obj]

重要的是,我可以提供.SDcols作为对象,因为我是以编程方式进行操作的。我还想知道是否有可能使用data.table而不是聚合和/或xtabs解决方案。

感谢任何帮助。

1 个答案:

答案 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")]