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

R语言:如何提取数据框中多列含指定矛盾类别的行?

解决思路与代码实现

你需要提取同一行中同时包含类别1和8的行,原代码用any_vars实现的是“或”逻辑(只要某列有1或8就保留),要改成“且”逻辑,确保两个值都出现在同一行的指定列中,以下是几种可行方案:

方案1:指定列直接枚举组合(适合列数少的情况)

如果只需要检查col_1和col_2两列,直接枚举两种矛盾组合即可:

Df %>%
  filter((col_1 == 1 & col_2 == 8) | (col_1 == 8 & col_2 == 1))

方案2:通用型方法(适合多列场景,比如你的15列)

如果需要检查多列(比如全部15列,或某几列范围),可以用rowSums结合across统计1和8的出现次数,只要两者都至少出现一次,就判定为矛盾行:

# 检查指定列(比如col_1到col_15)
Df %>%
  filter(
    rowSums(across(vars(col_1:col_15), ~ . == 1)) >= 1 &
    rowSums(across(vars(col_1:col_15), ~ . == 8)) >= 1
  )

# 如果要检查所有列,替换成everything()
Df %>%
  filter(
    rowSums(across(everything(), ~ . == 1)) >= 1 &
    rowSums(across(everything(), ~ . == 8)) >= 1
  )

逻辑说明

  • rowSums(across(...))会逐行统计符合条件的列数
  • 第一个条件确保行中至少有一个列是1,第二个条件确保至少有一个列是8,两者同时满足就说明同一行存在矛盾类别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:30:59