【发布时间】:2014-04-28 09:05:05
【问题描述】:
我有这个具有不同列类型的 data.table。
我事先不知道列名,我只想为特定类型的列(比如数字)生成聚合。如何使用 data.table 实现这一点?
例如,考虑下面的代码:
dt <- data.table(ch=c('a','b','c'),num1=c(1,3,6), num2=1:9)
需要创建一个接受上述data.table的函数,并自动对按字符字段分组的数字字段执行计算(比如num1上的sum和num2上的mean,by ch)。如何动态实现?
我们可以使用sapply(dt, is.numeric) 找出数字列,但它以字符串形式提供列名 - 不知道如何将其插入 data.table。帮助表示赞赏。下面的代码给出了所需的概念 - 但不起作用
DoSomething <- function(dt)
{
numCols <- names(dt)[sapply(dt, is.numeric)]
chrCols <- names(dt)[sapply(dt, is.character)]
dt[,list(sum(numCols[1]), mean(numCols[2])), by=(chrCols), with=F]
}
【问题讨论】:
标签: r data.table