You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:移除指定列全为0的数据框行(适配动态列名)

R语言筛选非全0的S列行解决方案

核心思路:保留至少有一个以S开头的列不为0的行,避免因正负抵消导致的误删。

方法一:Base R 实现

# 定位所有以S开头的列
s_columns <- grep("^S", colnames(df))
# 筛选出非全0的行
df_result <- df[rowSums(df[, s_columns] != 0) > 0, ]

说明:df[, s_columns] != 0生成逻辑矩阵标记非0位置,rowSums统计每行非0元素数量,数量>0即表示该行S列不全为0,予以保留。

方法二:dplyr(tidyverse)实现

library(dplyr)

df_result <- df %>%
  filter(if_any(starts_with("S"), ~ .x != 0))

说明:starts_with("S")精准匹配所有S开头的列,if_any检查每行是否存在至少一个非0值,满足条件的行被保留。

两种方法最终都会得到保留Cat为A、B、C、F的结果,D、E行因S列全0被移除。

内容的提问来源于stack exchange,提问作者ThingyBlahBlah3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:43:12