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
相关产品推荐
相关产品推荐

