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

基于另一数据框移除目标数据集值及去重技术问题咨询

我来帮你解决这两个数据框去重的问题,结合你给出的示例数据一步步说明:

问题1:基于第二个数据框从第一个数据框中移除值

核心思路是:找出第一个数据框中不存在于第二个数据框的元素,保留这些行。假设你的第一个数据框叫df1,第二个叫df2,且两个数据框用来匹配的列名都是number,可以用两种方式实现:

  • 基础R写法:
# 筛选出df1中number不在df2$number里的所有行
df1_filtered <- df1[!df1$number %in% df2$number, ]
  • dplyr包写法(更直观):
library(dplyr)
df1_filtered <- df1 %>% filter(!number %in% df2$number)
问题2:基于数据集1的值移除数据集2中与之重复的值

先把你的示例数据构造出来方便测试:

df1 <- data.frame(number = c(2345, 2234, 1111))
df2 <- data.frame(
  number = c(2345, 2121, 1111, 9999),
  name = c("kk", "ll", "ms", "rr")
)

你之前的代码逻辑搞反啦!你写的filter(df2, df2$number %in% df1$number = TRUE)是在保留和df1重复的行,而你需要的是移除这些重复行,所以得加个!(取反符号),同时注意语法错误——filter里的条件不用写= TRUE,直接写判断逻辑就行。

正确的两种写法:

  • 基础R写法:
df2_filtered <- df2[!df2$number %in% df1$number, ]
  • dplyr修正写法:
library(dplyr)
df2_filtered <- df2 %>% filter(!number %in% df1$number)

运行后得到的df2_filtered结果就是你想要的:

number name
1   2121   ll
2   9999   rr

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:42:29