2015-11-06 151 views
0

我想按组找到非零值的平均值为多列:如何查找按组的非零值的平均值?

mydata<- data[, lapply(.SD, function(x) mean(x, na.rm=TRUE)), by=group, 
         .SDcols=c("col1", "col2")] 

我应该添加到上面的代码?

+0

当你说“添加非零值,”你的意思是“计数得到mean非零值“?由于x + 0 = x,因此添加非零值与添加* all *值相同。 – Gregor

+1

@Soheil'sum(c(-1,0,2))'和'sum(c(-1,2)'是相同的。唯一的区别是当一个组只有0个值时,那么你可能会得到'NA' – akrun

+0

我的不好,我想计算平均值。 – Soheil

回答

2

我们子集在.SDcols指定每一列都没有的元素0(x[x!=0])和“组”

data[, lapply(.SD, function(x) mean(x[x!=0], na.rm=TRUE)), by =group, 
       .SDcols= c('col1', 'col2')] 
+0

我只是在试着'x!= 0'这明显计算了一些其他的东西。我一直在问这个问题,因为我正在寻找一段时间,它可能是 – Soheil

+0

@Soheil你的代码'mean'和标题中的'sum'混淆在一起,没有可重现的例子/期望的输出 – akrun

+0

我编辑了代码 – Soheil