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

如何在R中通过交叉相乘平衡分类变量的样本比例?

在R中实现类别样本的重复平衡操作

你需要通过重复样本让两类数据量一致:Category 0有3个样本,需重复7次;Category 1有7个样本,需重复3次,最终两类各21条数据。下面给你两种实用的实现方式:

基础R原生方法

无需额外安装包,用原生函数即可完成:

# 先统计两类的样本数量
n0 <- sum(df$Category == 0)
n1 <- sum(df$Category == 1)

# 给每一行分配对应的重复次数:0类重复n1次,1类重复n0次
repeat_times <- ifelse(df$Category == 0, n1, n0)

# 按重复次数复制行,生成平衡后的数据集
balanced_df <- df[rep(seq_len(nrow(df)), repeat_times), ]

dplyr tidyverse风格方法

如果习惯用tidyverse工具链,管道写法更直观:

library(dplyr)

# 硬编码重复次数(适配你当前的数据集)
balanced_df <- df %>%
  group_by(Category) %>%
  slice(rep(row_number(), times = case_when(Category == 0 ~ 7, Category == 1 ~ 3))) %>%
  ungroup()

# 通用写法(自动获取两类样本量,适配任意不平衡数据集)
n0 <- sum(df$Category == 0)
n1 <- sum(df$Category == 1)

balanced_df <- df %>%
  group_by(Category) %>%
  slice(rep(row_number(), times = ifelse(Category == 0, n1, n0))) %>%
  ungroup()

结果验证

执行以下代码确认两类样本量是否一致:

table(balanced_df$Category)

正常输出应为0:21 1:21,说明平衡操作成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:03:15