R语言dplyr包结合rowSums按行和筛选数据行的实现方法
使用dplyr结合rowSums筛选行的实现方法
你可以直接在dplyr的filter()函数中调用rowSums()实现需求,具体写法如下:
全列参与求和的最简写法
如果你当前的数据框所有列都需要参与行和计算(比如你已经提前把iris裁剪为仅含4个数值列的版本),直接用管道符占位符.指代传入的整个数据框即可:
library(dplyr) iris_filtered <- iris %>% filter(rowSums(.) >= 10)
这个写法和你给出的base R实现逻辑完全等价,筛选结果也完全一致。
指定部分列参与求和的灵活写法
如果你不想提前裁剪数据框,只想指定部分列参与行和计算,可以搭配across()函数指定列范围,比如保留原始iris的Species列的同时,仅用4个特征列计算行和:
# 按列位置指定参与求和的列(前4列) iris_filtered <- iris %>% filter(rowSums(across(1:4)) >= 10) # 按列名规则指定参与求和的列(所有以Sepal、Petal开头的列) iris_filtered <- iris %>% filter(rowSums(across(starts_with(c("Sepal", "Petal")))) >= 10)
这种写法适配场景更灵活,不需要提前对原始数据做列裁剪操作。
内容的提问来源于stack exchange,提问作者LDT
相关产品推荐
相关产品推荐

