我想生成一个新变量,其中某些列满足标准的次数(如 ==
、 <
、 >
)。该函数需要处理 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)
# x y z
# [1,] 10 12 14
# [2,] 11 13 15
# [3,] 12 14 16
# [4,] 13 NA NA
# [5,] 14 16 NA
# [6,] 15 17 19
# [7,] 16 18 20
# [8,] 17 19 21
# [9,] 18 20 22
# [10,] 19 21 23
# [11,] 20 22 24
在这个例子中,我想要一个变量“less16”,它总结了每一行中 < 16
的值数量,跨列“x”、“y”和“z”。前几行的期望结果: 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
循环,但到目前为止都无济于事。任何建议将不胜感激。提前致谢。
最佳答案
许多这些函数实际上都有一个 na.rm
参数用于排除 NA
值:
apply(data,1,function(x) {sum(x < 16,na.rm = TRUE)})
关于满足条件的值的行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134809/