R 中的 data.table 包提供了以下选项:
其中: 'TRUE' 返回与 'i' 匹配的 'x' 的整数行号。
但是,我看不到j
在使用 建立的组内获得“x”的整数行号的方法by
。
例如,给定...
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6))
...我想知道每个 y 值的 DT 索引。
对我而言,价值在于我正在使用与另一个数据结构 (ADS) 并行的 data.table,我打算基于 data.table 的有效计算分组对其执行分组计算。
例如,假设 ADS 是一个向量,DT 中的每一行都有一个值:
ADS<-sample(100,nrow(DT))
作为一种解决方法,如果我首先向 data.table 添加一个新的序列列,我可以计算由 DT$y 组确定的 ADS 的组均值。
DT[,seqNum:=seq_len(nrow(DT))]
DT[,mean(ADS[seqNum]),by=y]
这给出了我想要的结果,但代价是添加了一个新列。
我意识到在这个例子中我可以使用 tapply 得到相同的答案:
tapply(ADS,DT$y,mean)
但是,我将无法获得 data.tables 高效分组的性能优势(尤其是在索引“by”列时)。
也许我忽略了一些语法???
也许这是添加到 data.table 的一个简单功能,我应该请求它(眨眼,眨眼)???
建议的语法:可选地将 '.which' 设置为组索引,允许编写:
DT[,mean(ADS[.which]),by=y,which=TRUE]