聚合数据表,列名称为字符串

时间:2014-06-14 10:08:11

标签: r data.table

我想聚合R数据表的列,但是将列名称作为字符串提供。是否可以使用数据表功能来完成它?

例如,我想重现:

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

但是使用字符串作为列名,例如:

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

我试过了:

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

有效,但速度很慢,因为它没有充分利用数据表。

谢谢!

2 个答案:

答案 0 :(得分:5)

使用get

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

但我不确定您是否会在不使用get的情况下获得相同的效果。

答案 1 :(得分:3)

使用get是通用方法,但对于这种特殊情况,它可能更快:

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