如何计算非NA的细胞

时间:2018-04-18 15:28:37

标签: r

我试图取每个名字的平均分数。我想将得分值相加(省略NA s),然后除以值的数量。我得到了总和,但我正在努力如何除以不是NA的值的数量。

以下是一些示例代码:

names <- c("d", "e", "f", "g")
score.a.ALL <- c(1, 2, NA, 3)
score.b.ALL <- c(NA, 4, 5, 6)
score.c.ALL <- c(NA, NA, NA, 1)

dat <- data.frame(names, score.a.ALL, score.b.ALL, score.c.ALL)
dat$goal <- c(1, 3, 5, 3.3)

scoreALL <- dat[, grep("score\\.[^.]+\\.ALL", colnames(dat))]

dat$average <- rowSums(scoreALL, na.rm=T)/ ncol(scoreALL[,is.na==F])

目标栏是平均值应该是什么。任何帮助深表感谢!谢谢!

1 个答案:

答案 0 :(得分:4)

已经实现了行方法的功能:rowMeans。设置na.rm=TRUE以省略NA

> dat$goal <- rowMeans(dat[-1], na.rm = TRUE)
> dat
  names score.a.ALL score.b.ALL score.c.ALL     goal
1     d           1          NA          NA 1.000000
2     e           2           4          NA 3.000000
3     f          NA           5          NA 5.000000
4     g           3           6           1 3.333333