使用字符串作为列名聚合数据表

4

我希望能够使用data table的功能,通过提供字符串格式的列名来汇总R数据表中的一列。例如,我想要复制以下操作:

foo[,newcol:=mean(oldcol), by=id]

但是使用字符串作为列名,例如:
foo[,"newcol":=mean("oldcol"), by="id"]

我已经尝试过:

foo[,"newcol":=mean(foo[["oldcol"]]), by="id"]

那个方案能够起作用,但由于没有充分利用数据表,速度很慢。
谢谢!
2个回答

5

使用 get

 foo[,"newcol":=mean(get("oldcol")), by="id"]

但我不确定使用get后是否会有与没有使用时相同的性能。


它比官方方式慢,但比我之前做的要快得多。谢谢! - kahlo

3

使用get是通用的方式,但是对于这种特定情况,以下方法可能更快:

foo[, "newcol" := lapply(.SD, mean), by = "id", .SDcols = "oldcol"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接