我想在R中生成一个新变量,它创建其他列满足标准的次数之和,我需要一个可以处理NA的函数,例如
x <- seq(10,20); y <- seq(12,22); y[4] <- NA; z <- seq(14,24); z[c(4,5)] <- NA
data <- cbind(x,y,z)
我想要的是一个变量“less16”,它总结了每个记录/行在x,y,z列之间的值为&lt; 16的次数:
x y z less16
10 12 14 3
11 13 15 3
12 14 16 2
13 NA NA 1
14 16 NA 1
etc
我已经尝试过rowSum(),sum(),which(),for循环使用if和else if,到目前为止都无济于事。任何建议将不胜感激。提前致谢。
答案 0 :(得分:7)
data$less16 <- rowSums(data < 16,na.rm=TRUE)
答案 1 :(得分:5)
很多这些函数实际上都有一个na.rm
参数来排除NA
值:
apply(data,1,function(x) {sum(x < 16,na.rm = TRUE)})