我正在使用函数dcast.data.table,它将一个汇总函数作为参数,例如sum或mean。我的数据包含条目“NA”,我想要忽略,所以我想添加na.rm作为均值的参数。我可以使用什么语法?
以下是我能成功完成的事情:
> library("data.table")
> library("reshape2")
> DT = data.table(x=rep(c("a","b"),each=5), y=c(1,2), v=c(1:7,NA,NA)) # created as an example
# tabulate the mean value of v for each x-y combination:
> dcast.data.table(DT, x~y,fun = mean, value.var = 'v')
x 1 2
1: a 3 3
2: b NA NA
我想将参数na.rm传递给dcast.data.table中使用的函数mean,有没有办法做到这一点?
答案 0 :(得分:-1)
您可以通过这种方式封装:function(x){mean(x, na.rm=T)}
这样,您的代码就会变成:
library("data.table")
library("reshape2")
DT = data.table(x=rep(c("a","b"),each=5), y=c(1,2), v=c(1:7,NA,NA))
myMean = function(x){mean(x, na.rm=T)}
dcast.data.table(DT, x~y,fun = myMean, value.var = 'v')
希望有所帮助