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

基于列位置拆分dataframe为分组子表的tidyverse实现求助

实现方案(tidyverse生态)

以下代码可实现按指定列数拆分数据集为嵌套子tibble,可直接适配你的需求:

library(tidyverse)

# 1. 定义每组的列数,你的实际业务场景改成6即可
col_per_group <- 3

# 2. 执行拆分,得到嵌套tibble
split_result <- mtcars %>%
  as_tibble() %>%
  {
    # 生成列索引的分组规则
    col_seq <- seq_along(.)
    col_groups <- split(col_seq, ceiling(col_seq / col_per_group))
    # 按分组提取对应列生成子tibble
    map(col_groups, ~ pick(all_of(.x)))
  } %>%
  # 转换为结构化的嵌套tibble,可直接用于后续批量处理
  enframe(name = "分组编号", value = "子数据集")

结果说明

输出的split_result是一个两层结构的tibble:

  • 每行对应一个分组,分组编号按列的顺序从1开始递增
  • 子数据集列的每个元素都是对应分组的独立tibble,保留原数据集的全部行数据
  • 你自己的66列数据集只需将col_per_group改为6,即可自动生成11个每组6列的子数据集

原代码问题说明

  1. 之前使用的group_by(across())逻辑是按行的数值分组,不是按列的位置拆分,和需求完全不匹配
  2. pivot_longer的写法只选中了前3列,也没有配置列分组的拆分规则,因此无法覆盖全量列生成对应分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:07