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

R语言如何将数据框列转置为变量存入新增列实现宽表转长表

完全可以实现,你需要的是常见的宽表转长表操作,以下是两种常用实现方案:

方案1:使用tidyverse套件的pivot_longer(更推荐,语法简洁)

这是目前R语言中处理长宽表转换最常用的方法,代码如下:

# 未安装包可先运行 install.packages("tidyr")
library(tidyr)

# 转换操作:排除ID、NAME列,其余列转为TYPE和VALUE
BD2 <- BD %>% 
  pivot_longer(
    cols = -c(ID, NAME),
    names_to = "TYPE",
    values_to = "VALUE"
  )

运行后得到的BD2和你给出的预期结构完全一致。

方案2:基础R原生方法(无需安装额外包)

如果不想依赖第三方包,可以用基础R自带的reshape函数实现:

BD2 <- reshape(
  BD,
  varying = 3:5, # 指定要转置的列位置,这里是第3到第5列
  v.names = "VALUE",
  idvar = c("ID", "NAME"), # 指定保持不变的标识列
  timevar = "TYPE",
  times = names(BD)[3:5], # 取原列名作为TYPE的取值
  direction = "long"
)
# 去除自动生成的冗余行名
rownames(BD2) <- NULL

两种方案生成的结果都和你预期的构造代码输出完全匹配,会保留原有的NA值,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:36:02