我试图取每个名字的平均分数。我想将得分值相加(省略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])
目标栏是平均值应该是什么。任何帮助深表感谢!谢谢!
答案 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