我的数据有时部分丢失,有时完全丢失。如果我对部分缺失的数据求和,我想返回非缺失数据的总和,但如果我对完全缺失的数据求和,我想返回缺失的值。
我正在使用 Base R,但如果使用 tidyverse 有更好的解决方案,我很乐意使用它。
以下是我在 R 中使用 na.rm 选项时发生的一些示例:
> sum(c(1,NA,2), na.rm = "TRUE")
[1] 3
> sum(c(NA,NA,NA), na.rm = "TRUE")
[1] 0
> sum(c(1,NaN,2), na.rm = "TRUE")
[1] 3
> sum(c(NaN,NaN,NaN), na.rm = "TRUE")
[1] 0
部分缺失数据的总和为 3 就是我想要的。完全缺失的数据的总和为零不是我想要的。我可以使用其他函数或选项来导致完全缺失的数据返回缺失值吗?
您可以创建自己的辅助函数:
my_sum <- function(x) {
if (all(is.na(x))) return(NA)
sum(x, na.rm = TRUE)
}
my_sum(c(1, NA, 2)) ## 3
my_sum(c(NA,NA,NA)) ## NA
my_sum(c(1,NaN,2)) ## 3
my_sum(c(NaN,NaN,NaN)) ## NA