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

R语言dataframe特殊重塑:3x3转6x2及任意列通用实现方法

使用tidyverse实现通用相邻列堆叠逻辑

核心实现代码

library(tidyverse)

# 替换example为任意列数的输入数据框即可运行
result <- seq(ncol(example) - 1) %>%
  map_dfr(
    ~ select(example, all_of(c(.x, .x + 1))) %>%
      rename_with(~ c("one", "two"))
  )

逻辑说明

  • 该实现完全适配任意列数的输入数据框,核心逻辑是遍历所有相邻列对,将每组相邻两列单独提取后按行堆叠
  • seq(ncol(example) - 1)会自动根据输入的列数生成所有相邻列对的起始索引,比如3列生成1、2,对应取「第1列+第2列」「第2列+第3列」两组子表
  • map_dfr会自动将所有子表按行合并,同时统一将输出的两列重命名为one和two,和预期输出格式完全匹配

效果验证

拿示例数据运行上述代码,输出结果和需求完全一致:

# 示例输入
example <- data.frame(
  one = c("a","b","c"),
  two = c("a","b","b"),
  three = c ("c","a","b")
)

# 运行通用代码后输出
> result
  one two
1   a   a
2   b   b
3   c   b
4   a   c
5   b   a
6   b   b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:02