如何计算R

时间:2016-11-18 19:58:37

标签: r

我的数据框有任意数量的数字变量

d <- data.frame(X1 = c(-1, -2, 0), X2 = c(10, 4, NA), X3 = c(-4, NA, NA))

如何计算每个变量的正值之和以使它们保持在列表中,如果变量没有正值或所有值都是NA,则返回此变量为0。

2 个答案:

答案 0 :(得分:0)

我们可以使用applyifelse函数迭代每列,并将NA或负值替换为0

apply(d, 2, function(x) sum(ifelse(is.na(x) | x < 0, 0, x)))

编辑 - 简洁

正如@ joel.wilson所指出的,有一种更简洁的逻辑编码方式:

apply(d, 2, function(x) sum(x[x > 0], na.rm = TRUE))

答案 1 :(得分:0)

library(expss)
d <- data.frame(X1 = c(-1, -2, 0), X2 = c(10, 4, NA), X3 = c(-4, NA, NA))
sum_col_if(gt(0), d)
# X1 X2 X3 
# 0 14  0