【发布时间】:2018-01-18 14:53:18
【问题描述】:
我在通过以下函数按组计算非缺失值时遇到了一些困难(它也给出了标准差和平均值):
test <- do.call(data.frame, aggregate(. ~ treatment, have, function(x) c(n = sum(!is.na(x)), mean = mean(x), sd = sd(x))))
它最终为我提供了数据框中所有列的非缺失数量,而不仅仅是单个列。
我一直在通过 SO 寻找一些建议,发现 this、this 和 this 很有帮助,但我不明白为什么带有 function(x) 的聚合会结合一些列sum(!is.na(x),但不是平均值或标准差。
编辑:添加表格
This is the data I get from my code
您会注意到,在“有”数据框中,按治疗组计算 var1 列中的非缺失行得出以下结果:
车 - 9 gr.4 - 8 gr.3 - 10 gr.2 - 5
但是当使用 sum(!is.na(x) 我得到以下结果
车辆 - 6 gr.4 - 5 gr.3 - 10 gr.2 - 5
我相信这是因为该函数同时使用 var1 和 var2 来求和非缺失的数量。我不知道如何纠正这个问题。
最好的,
杰克
【问题讨论】:
-
如果您提供带有示例输入和所需输出的reproducible example,则更容易为您提供帮助。
标签: r aggregate missing-data