gpt4 book ai didi

r - 如何计算每组 NA 的数量?

转载 作者:行者123 更新时间:2023-12-02 17:12:48 26 4
gpt4 key购买 nike

有人可以解释一下为什么我使用聚合函数按组计算缺失值时得到不同的答案吗?另外,是否有更好的方法使用 native R 函数按组对缺失值进行计数?

DF <- data.frame(YEAR=c(2000,2000,2000,2001,2001,2001,2001,2002,2002,2002), X=c(1,NA,3,NA,NA,NA,7,8,9,10))
DF

aggregate(X ~ YEAR, data=DF, function(x) { sum(is.na(x)) })
with(DF, aggregate(X, list(YEAR), function(x) { sum(is.na(x)) }))

aggregate(X ~ YEAR, data=DF, function(x) { sum(! is.na(x)) })
with(DF, aggregate(X, list(YEAR), function(x) { sum(! is.na(x)) }))

最佳答案

?aggregate 的帮助页面指出,公式方法有一个参数 na.action,默认设置为 na.omit >。

na.action: a function which indicates what should happen when the data contain NA values. The default is to ignore missing values in the given variables.

将该参数更改为 NULLna.pass 以获得您可能期望的结果:

# aggregate(X ~ YEAR, data=DF, function(x) {sum(is.na(x))}, na.action = na.pass)
aggregate(X ~ YEAR, data=DF, function(x) {sum(is.na(x))}, na.action = NULL)
# YEAR X
# 1 2000 1
# 2 2001 3
# 3 2002 0

关于r - 如何计算每组 NA 的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com