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

在R中移除两组样本量不足2的数据框列的方法

筛选符合样本量要求的列

要解决这个问题,核心是先检查每列在0组和1组中的有效样本量(非NA值的数量),只保留两组样本量都≥2的列。以下是具体实现方法:

方法一:Base R 实现

# 计算每列在两组中的有效样本量
sample_counts <- t(sapply(df[-1], function(col) {
  tapply(col, df$group, function(x) sum(!is.na(x)))
}))

# 筛选出两组样本量都≥2的列名
valid_columns <- rownames(sample_counts)[apply(sample_counts, 1, function(x) all(x >= 2))]

# 生成过滤后的数据集
df_filtered <- df[, c("group", valid_columns)]

方法二:dplyr 实现(更简洁)

如果你习惯用tidyverse工具链,可以用以下代码:

library(dplyr)

df_filtered <- df %>%
  select(
    group,
    # 对每列检查两组样本量是否都≥2
    where(function(col) {
      group_sizes <- tapply(col, df$group, function(x) sum(!is.na(x)))
      all(group_sizes >= 2)
    })
  )

验证结果

运行上述代码后,df_filtered会自动移除pear和cherry列:

  • pear列在0组的有效样本量为0,不满足≥2的要求;
  • cherry列在1组的有效样本量仅为1,同样不满足要求。

剩下的apple、banana、kiwi列都符合两组样本量≥2的条件,可以安全执行wilcox.test。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:36:19