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

如何基于变量条件合并观测值:观测数不足150时并入下一组

处理因子组合并的方案

假设你的数据框名为df,level2是取值1-5的因子变量,以下是实现观测数不足150的组并入下一组的具体步骤:

1. 统计各组观测数

先用dplyr统计每个level2水平的样本量:

library(dplyr)

group_counts <- df %>%
  count(level2, name = "sample_count")

2. 构建组映射关系

把因子转换为数值方便遍历检查,然后从前往后判断每个组是否需要合并到下一组:

# 转换为数值型水平
group_counts <- group_counts %>%
  mutate(level_num = as.numeric(as.character(level2)))

# 初始化映射表:默认保留原组
level_mapping <- group_counts %>%
  select(level2, level_num) %>%
  mutate(new_level = level_num)

# 遍历检查并更新映射
for (i in 1:(nrow(group_counts)-1)) {
  if (group_counts$sample_count[i] < 150) {
    level_mapping$new_level[i] <- level_mapping$new_level[i+1]
  }
}

3. 应用映射到原数据框

将原数据的level2替换为合并后的组,最后转回因子类型:

df <- df %>%
  mutate(level_num = as.numeric(as.character(level2))) %>%
  left_join(level_mapping, by = "level_num") %>%
  mutate(level2 = factor(new_level)) %>%
  select(-level_num, -new_level)

补充说明

  • 如果遇到连续多个组样本量都不足150的情况(比如level1有100个、level2有120个),这两个组都会被合并到level3
  • 最后一组(level5)如果样本量不足150,上述代码会保留该组;如果需要合并到前一组,可以修改循环逻辑,从倒数第二组往前检查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:45:26