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

求对应R语言dplyr分组逻辑的Excel等效筛选方法

对应R分组筛选逻辑的Excel实现方法

需求说明

按ID分组,仅保留该组Status最小值为0的ID的所有行;若组内Status最小值不为0(比如示例中的ID2,所有Status都是1),则删除该ID的全部行。

R代码示例(可复现)

library(dplyr)

n = 10

set.seed(1)
ID <- c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3)
Status <- sample(c(0,1), n, replace = TRUE)
Data <- as.data.frame(cbind(ID, Status))

# 标记分组所属阶段,最终保留Phase1对应的ID行
Data %>%
  group_by(ID) %>%
  mutate(Test = if_else(min(Status) == 0, "Phase 1", "Phase 2"))

Excel实现方法

方法1:辅助列法(适合新手)

假设数据在A列(ID)、B列(Status),数据范围为A2:B11:

  • 添加辅助列(比如C列),命名为ID_Status_Min
  • 在C2单元格输入数组公式:=MIN(IF($A$2:$A$11=A2,$B$2:$B$11)),按Ctrl+Shift+Enter完成输入(Excel 365/2021及以后版本直接回车即可)
  • 下拉填充C列到C11,此时C列显示每个ID对应的Status最小值
  • 筛选C列值等于0的行,即为需要保留的内容

方法2:Power Query法(适合大数据量)

  1. 选中数据区域,点击「数据」选项卡→「从表格/区域」(Excel 2016及以后版本支持),确认数据包含表头
  2. 在Power Query编辑器中:
    • 点击「转换」选项卡→「分组依据」,分组列选择ID,新列名设为所有行,操作选择「所有行」
    • 添加自定义列,公式输入:=List.Min([所有行][Status]),命名为Status_Min
    • 筛选Status_Min列等于0的行
    • 点击「所有行」列右侧的展开按钮,选择展开所有列
    • 点击「关闭并上载」,将处理后的数据加载回Excel

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:05:25