估计平均分数,包括 R 中的缺失

Estimate mean score including missingness in R

我正在尝试根据数据框中的四列估算平均分数。条件是一行中至少有两个值应具有四个值中的非缺失值。否则,如果该行中存在两个以上的 NA,则平均分数应为 NA。假设数据集中只有三个值可用,一个 NA。然后,总分除以 3,因为我需要将总分除以可用值的数量。

我的数据是这样的:

a = c(1, 1, 1, 1, NA, 2, NA)
b = c(2, 4, NA, 4, 1, NA, 8)
c = c(2, NA, 6, 4, NA, 4, NA)
d = c(2, 4, NA, 4, NA, 3, NA)
df <- data.frame(a,b,c,d)

> df
   a  b  c  d
1  1  2  2  2
2  1  4 NA  4
3  1 NA  6 NA
4  1  4  4  4
5 NA  1 NA NA
6  2 NA  4  3
7 NA  8 NA NA

我想要的分数是

>df$mean
1.75
3
3.5
3.25
NA
3
NA

有什么想法吗? 提前致谢。

您可以使用 rowSumsrowMeansifelse

ifelse(rowSums(is.na(df))<=2,rowMeans(df,na.rm=T),NA)
[1] 1.75 3.00 3.50 3.25   NA 3.00   NA