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

如何基于分组行数对分组变量执行条件过滤(R语言)

R语言分组过滤数据解决方案

没问题,这就帮你搞定这个分组过滤的需求!我们可以借助dplyr包来轻松实现,逻辑清晰易懂,先看完整代码:

# 先安装并加载dplyr包(如果还没安装的话)
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# 构造你提供的样本数据
df <- structure(list(ACH_DATE = c("31OCT2018", "31JAN2019", "31OCT2018", "31JAN2019", "31OCT2018", "31JAN2019"), 
                     CODE = c("A81001", "A81001", "A81002", "A81002", "A81003", "A81004")), 
                row.names = c(NA, 6L ), class = "data.frame")

# 核心的分组过滤操作
df_processed <- df %>%
  group_by(CODE) %>%
  filter(!(n() > 1 & ACH_DATE == "31OCT2018")) %>%
  ungroup()

# 查看处理后的结果
print(df_processed)

代码逻辑解释

  • 分组:用group_by(CODE)把数据按CODE字段分组,相同CODE的行会被归为一组;
  • 条件过滤:filter()里的!(n() > 1 & ACH_DATE == "31OCT2018")是关键:
    • n()会返回当前分组的行数;
    • 整个条件的意思是:保留那些不满足「分组行数>1 且 ACH_DATE等于31OCT2018」的行。也就是说,只有当某个分组有超过1行数据时,我们才移除其中ACH_DATE为"31OCT2018"的行;如果分组只有1行(比如A81003、A81004),则直接保留该行;
  • 取消分组:最后用ungroup()把分组后的 tibble 转回普通数据框,方便后续操作。

处理后的数据结果

运行代码后,你会得到如下结果:

# A tibble: 4 × 2
  ACH_DATE   CODE  
  <chr>      <chr> 
1 31JAN2019  A81001
2 31JAN2019  A81002
3 31OCT2018  A81003
4 31JAN2019  A81004

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:44:46