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

如何在R中根据A/B组样本量条件筛选是否保留“A & B”分组

在R中根据A/B组样本量条件筛选"A & B"组

需求说明

仅当A组或B组在任意时间点的样本量小于10时,保留"A & B"组;否则移除该组。

解决方案

我们可以分两步实现逻辑:

  1. 先判断数据集是否满足"A/B组存在样本量<10"的条件
  2. 根据这个条件决定是否过滤掉"A & B"组

用dplyr实现的代码如下:

library(dplyr)

# 定义通用筛选函数
filter_combined_group <- function(df) {
  # 检查A/B组是否存在任意样本量小于10的情况
  need_keep_combined <- df %>%
    filter(group %in% c("A", "B")) %>%
    pull(sample_size) %>%
    any(. < 10)
  
  # 根据条件执行筛选
  if (need_keep_combined) {
    df
  } else {
    df %>% filter(group != "A & B")
  }
}

测试示例

1. 测试应保留"A & B"的数据集

result_not_drop <- filter_combined_group(should_not_drop_group)
print(result_not_drop)

输出会保留所有4个组——因为A组在Before时间点的样本量为5(小于10),符合保留条件。

2. 测试应移除"A & B"的数据集

result_drop <- filter_combined_group(should_drop_group)
print(result_drop)

输出会移除"A & B"组——因为A和B组的所有样本量都≥10,不满足保留条件。

关于你尝试的无效代码问题

你使用的filter_if用法有误:filter_if是针对列的条件筛选(比如筛选满足某条件的列对应的行),而这里需要的是基于全局数据集的条件判断,因此不适用。改用先计算全局条件再过滤的方式即可解决问题。

内容的提问来源于stack exchange,提问作者J.Sabree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:15:37