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

R中如何基于一个数据框筛选另一个数据框的行(dplyr实现)

解决方法

方法1:修改现有merge代码

你当前的merge代码会将df1的所有列也带入结果,只需要在merge后选取df2的原有列即可:

NewDataframe <- merge(df2, df1, by = 'run', all.x = FALSE)[, names(df2)]

方法2:用逻辑匹配直接筛选(更简洁高效)

你的需求本质是筛选df2中run字段的值存在于df1的run字段中的行,直接用%in%运算符即可,不需要做表连接:

NewDataframe <- df2[df2$run %in% df1$run, ]

方法3:tidyverse生态方案

如果你使用dplyr包,可以用专门的半连接函数semi_join,它会返回左表(df2)中与右表(df1)匹配的行,且不会带入右表的任何列:

library(dplyr)
NewDataframe <- semi_join(df2, df1, by = "run")

以上三种方法都可以得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:36:01