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

R语言:如何用subset()基于多条件筛选生成新数据框?

用subset()筛选R数据框的解决方案

没问题,我来帮你搞定这个筛选需求!首先咱们先把你提供的数据转换成R里的标准数据框,方便后续操作:

# 创建原始数据框
df <- data.frame(
  a = c("z", "z", "x", "z", "x", "z", "x"),
  b = c(1, 2, 1, 1, 2, 1, 1),
  c = c(22, 18, 3, 16, 6, 12, 23),
  row.names = c("P1", "P2", "P3", "P4", "P5", "P6", "P7")
)

接下来就可以用subset()函数来筛选符合条件的行了。你的需求是**「a列值为z且b列值为1」或「a列值为x且b列值为2」**,这里要注意用括号把每组条件括起来,避免逻辑运算优先级的问题,然后用|表示逻辑“或”:

# 筛选目标行
new_df <- subset(df, (a == "z" & b == 1) | (a == "x" & b == 2))

运行这段代码后,new_df就是你想要的结果,咱们来看看输出:

> new_df
    a b  c
P1 z 1 22
P4 z 1 16
P6 z 1 12
P5 x 2  6

刚好是你期望的4行!简单解释一下代码逻辑:

  • (a == "z" & b == 1):匹配a列是z且b列是1的行
  • (a == "x" & b == 2):匹配a列是x且b列是2的行
  • |:把两个条件组连接起来,只要满足其中一组就会被选中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:19:19