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

基于另一DataFrame的ID频率值删除目标DataFrame的行

解决方法

先明确数据

原始数据df:

df <- structure(list(ID = c(123L, 123L, 123L, 555L, 555L, 555L), City = c("NEW YORK", 
"NEW YORK", "NEW YORK", "Los Angeles", "Los Angeles", "Los Angeles"
)), class = "data.frame", row.names = c(NA, -6L))

频率表df2:

df2 <- structure(list(ID = c(123L, 555L), Freq = 2:1), class = "data.frame", row.names = c(NA, 
-2L))

方法1:用dplyr包(简洁直观)

先加载dplyr,两步完成筛选:

library(dplyr)

# 第一步:找出要保留的ID(Freq=1的那些)
keep_ids <- df2 %>% filter(Freq == 1) %>% pull(ID)

# 第二步:过滤原始df,只留符合条件的行
result_df <- df %>% filter(ID %in% keep_ids)

也可以连写一步到位:

result_df <- df %>%
  left_join(df2, by = "ID") %>%  # 把频率信息关联到原始数据
  filter(Freq == 1) %>%          # 只保留Freq=1的行
  select(-Freq)                  # 删掉Freq列,还原原数据结构

方法2:用Base R(无需额外安装包)

不想装dplyr的话,用基础R函数也能搞定:

# 提取要保留的ID
keep_ids <- df2$ID[df2$Freq == 1]

# 过滤原始数据框
result_df <- df[df$ID %in% keep_ids, ]

验证结果

运行后result_df会只保留ID=555的3行数据,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:38