colSums()的特殊用途,仅当缺少1个或更少时,na.rm = TRUE

Eri*_*ail 2 if-statement r sum na na.rm

我需要在data.frame中对一些列进行求和,并使用一条规则来说明,如果只有1或更少的缺失要求总和,NA则如果缺少一个以上的观察,则要对一列NA进行求和.

说我有这样的数据,

dfn <- data.frame(
a  = c(3, 3, 0, 3),
b  = c(1, NA, 0, NA),
c  = c(0, 3, NA, 1))

dfn
  a  b  c
1 3  1  0
2 3 NA  3
3 0  0 NA
4 3 NA  1
Run Code Online (Sandbox Code Playgroud)

我应用我的规则,并将少于2的列总和NA.所以我得到这样的东西.

  a  b  c
1 3  1  0
2 3 NA  3
3 0  0 NA
4 3 NA  1
5 9 NA  4
Run Code Online (Sandbox Code Playgroud)

我玩过colSums(dfn, na.rm = FALSE)colSums(dfn, na.rm = TRUE).在我的真实数据中,有超过三列,也有超过4行.我想我可以用某种方式计算缺失并将其作为规则使用?

Jam*_*mes 5

我不认为你可以colSums单独做到这一点,但你可以使用ifelse以下内容添加到其结果:

colSums(dfn,na.rm=TRUE) + ifelse(colSums(is.na(dfn)) > 1, NA, 0)
 a  b  c 
 9 NA  4 
Run Code Online (Sandbox Code Playgroud)