R语言求和运算时如何排除负数变量,仅计算非负值总和?
R dataframe指定列求和忽略负数的实现方法
现有示例数据结构如下:
df <- data.frame(id = c(1,2,3,4), rnum = c(-2,0,3,2))
要实现忽略rnum列的负数求和,得到结果5,可以用以下两种常用方式:
方法1:逻辑筛选非负数值后求和
直接对列做逻辑子集筛选,仅保留大于等于0的数值传入求和函数:
sum(df$rnum[df$rnum >= 0])
运算时实际参与求和的数值为0、3、2,相加后即可得到结果5。
如果数据中存在NA值,可补充na.rm = TRUE参数避免返回NA:
sum(df$rnum[df$rnum >= 0], na.rm = TRUE)
方法2:替换负数为0后求和
不需要修改原数据的前提下,可以通过ifelse将负数临时替换为0再求和:
sum(ifelse(df$rnum < 0, 0, df$rnum))
这种方法适合需要保留原数据结构,同时统一处理负数取值的场景。
内容的提问来源于stack exchange,提问作者Erik Bodg
相关产品推荐
相关产品推荐

