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

如何堆叠R数据框指定列并重复其余列以整理出可用于分析的数据集

R宽表转长表(堆叠指定列)实现方法

以下两种方案均可得到你需要的newdf结果:

方案1:基础R实现

无需加载额外依赖包,直接用内置函数即可完成转换:

olddf <- data.frame('A' = c('Z1','Z2','Z3'), 
                    'B' = c(100, 200, 500),
                    'C' = c(90, 50, 60),
                    'D' = c(NA, 50, NA))
# 重复A、B列匹配堆叠后的行数,绑定C、D堆叠得到的CD列
newdf <- cbind(olddf[rep(seq(nrow(olddf)), 2), c("A", "B")],
               CD = stack(olddf, select = c(C, D))[,1])
# 可选:重置行名
rownames(newdf) <- NULL

方案2:tidyverse 简洁实现

用tidyr的pivot_longer函数,代码可读性更高:

library(tidyverse)

newdf <- olddf %>%
  pivot_longer(cols = c(C, D), 
               names_to = NULL, # 不需要保留原C/D列名的标识列
               values_to = "CD")

两种方案输出结果和你给出的示例newdf的结构、取值完全一致。

内容的提问来源于stack exchange,提问作者Expectation mean first moment

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:04