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

R语言中实现行因子转置为列的数据框重塑需求

解决方案

你要实现的是数据框的宽表转换:把var3的不同类别转为单独列,对应填充var4的值,同时保留var1和var2作为标识列,且同一var1下的var2需唯一。下面提供两种常用实现方法:

方法1:使用tidyr包的pivot_wider(推荐)

tidyr是tidyverse生态的核心工具,语法直观易读:

# 若未安装tidyr,先运行 install.packages("tidyr")
library(tidyr)

df2 <- pivot_wider(
  data = df,
  id_cols = c(var1, var2),  # 保留的唯一标识列
  names_from = var3,        # 转为新列名的变量
  values_from = var4,       # 填充到新列的值来源
  values_fill = NA          # 缺失值用NA填充
)

运行后会自动合并var1=B且var2=-1的两行,将oo和rr列分别填充为7和2,其余位置补NA,完全匹配你的期望结果。

方法2:使用reshape2包的dcast

如果习惯用reshape2包,也可以通过dcast实现:

# 若未安装reshape2,先运行 install.packages("reshape2")
library(reshape2)

df2 <- dcast(
  data = df,
  var1 + var2 ~ var3,  # 左侧为标识列,右侧为要转成列的变量
  value.var = "var4",  # 填充值的来源列
  fun.aggregate = NULL # 同一标识下每个var3仅对应一个值,无需聚合
)

结果验证

执行任意代码后,打印df2即可看到符合预期的输出:

> print(df2)
  var1 var2 pp mm oo rr
1    A -1.0  2 NA NA NA
2    A  0.5 NA  1 NA NA
3    A  1.5 NA  4 NA NA
4    A  2.5 NA  3 NA NA
5    A  3.5 NA  6 NA NA
6    A  4.0 NA  4 NA NA
7    B -1.0 NA NA  7  2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:00:11