我想聚合R数据表的列,但是将列名称作为字符串提供。是否可以使用数据表功能来完成它?
例如,我想重现:
foo[,newcol:=mean(oldcol), by=id]
但是使用字符串作为列名,例如:
foo[,"newcol":=mean("oldcol"), by="id"]
我试过了:
foo[,"newcol":=mean(foo[["oldcol"]]), by="id"]
有效,但速度很慢,因为它没有充分利用数据表。
谢谢!
答案 0 :(得分:5)
使用get
:
foo[,"newcol":=mean(get("oldcol")), by="id"]
但我不确定您是否会在不使用get
的情况下获得相同的效果。
答案 1 :(得分:3)
使用get
是通用方法,但对于这种特殊情况,它可能更快:
foo[, "newcol" := lapply(.SD, mean), by = "id", .SDcols = "oldcol"]