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

如何将含150+列及目标列的5000+行大数据集拆分为5个子集?

数据集拆分问题的修复方案

问题诊断

你的代码核心错误是按列而非按行分配分组:sample()的第二个参数用了ncolumn(data)(获取数据集的列数),但我们需要给每一行分配分组标签,应该用nrow(data)(获取行数)。原逻辑相当于给每一列分组,导致子集提取完全不符合预期。

修正后的代码

基础版(保留手动创建变量的习惯)

# 为每一行生成分组索引,5组概率均等
train_indices <- sample(5, nrow(data), replace = TRUE, prob = c(0.2, 0.2, 0.2, 0.2, 0.2))

# 提取各子集,自动保留所有列(含目标列)
train1 <- data[train_indices == 1, ]
train2 <- data[train_indices == 2, ]
train3 <- data[train_indices == 3, ]
train4 <- data[train_indices == 4, ]
train5 <- data[train_indices == 5, ]

# 批量查看子集摘要
lapply(list(train1, train2, train3, train4, train5), summary)

高效版(用列表存储子集,简化后续操作)

如果后续需要批量处理子集,推荐用split()函数一次性生成所有子集:

# 生成行分组索引,概率均等可简化为rep(0.2,5)
train_indices <- sample(1:5, nrow(data), replace = TRUE, prob = rep(0.2, 5))

# 将数据集按分组索引拆分,结果存入列表
train_list <- split(data, train_indices)

# 查看每个子集的摘要
lapply(train_list, summary)

# 调用单个子集示例:train_list[[1]]、train_list[[2]]

关键说明

  • 拆分后的每个子集都会完整保留原数据集的所有列,包括你的目标列,直接用于热图制作即可。
  • 用列表存储子集比手动创建多个独立变量更整洁,尤其当需要对所有子集执行相同操作(比如批量绘制热图)时,能大幅减少重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:05:15