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

使用R语言dplyr包删除符合特定条件的数据行

用dplyr批量删除符合条件的记录

核心代码实现

假设你的数据框名为df,包含year、Location、Office及其他业务列,执行以下代码即可完成需求:

library(dplyr)

df_cleaned <- df %>%
  group_by(year, Location) %>%
  mutate(office_unique_count = n_distinct(Office)) %>%
  filter(office_unique_count == 1) %>%
  select(-office_unique_count) %>%
  ungroup()

代码逻辑说明

  • group_by(year, Location):按年份+Location维度分组,确保我们在指定范围内判断Office的唯一性
  • mutate(office_unique_count = n_distinct(Office)):计算每组内不重复的Office数量,生成临时列用于筛选
  • filter(office_unique_count == 1):仅保留组内Office唯一的记录,自动剔除所有组内存在多个不同Office的行
  • select(-office_unique_count):(可选)删除临时生成的计数列,还原原数据结构
  • ungroup():取消分组状态,避免后续数据操作受分组约束

效果验证

针对你提到的示例场景:

  • 第1年Location为XYZ的组因包含B22、B23两个Office,整组被删除
  • 第2年所有组的Office均唯一,全部保留
  • 第3年Location为ABC的组因包含L17、L18两个Office,整组被删除

该方法针对10万行级别的数据性能表现稳定,dplyr的分组计算经过优化,不会出现明显卡顿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:35:19