我正在尝试基于数据帧中的四列来估计平均得分。条件是连续至少两个值应具有四个值中的非缺失值。否则,如果该行中存在两个以上的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
有什么想法吗? 预先感谢。
答案 0 :(得分:6)
您可以使用rowSums
,rowMeans
和ifelse
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