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

R语言如何拉伸长表为按用户生成前缀列的宽表?

你之前的dcast参数设置不符合转换逻辑:公式左侧是要保留为行维度的变量,右侧是要扩展为列维度的变量,value.var是要填充到单元格的数值字段,你之前的设置刚好和需求相反。

正确实现代码(基于data.table)

library(data.table)
# 转换为data.table格式
setDT(frame)
# 第一步:先将宽表转为更长的长格式,保留行标识为iteration_round和name
molten_dt <- melt(frame, 
                  id.vars = c("iteration_round", "name"), 
                  measure.vars = c("var1", "var2", "var3", "var4"))
# 第二步:按iteration_round为行,name+变量名组合为列转宽,自动生成name_varx格式的列名
res_dt <- dcast(molten_dt, 
                iteration_round ~ name + variable, 
                value.var = "value")
# 调整列顺序,将iteration_round放到最后一列
setcolorder(res_dt, c(setdiff(names(res_dt), "iteration_round"), "iteration_round"))

输出结果

用你提供的样例数据运行后,res_dt的输出完全匹配需求:

person1_var1 person1_var2 person1_var3 person1_var4 person2_var1 person2_var2 person2_var3 person2_var4 person3_var1 person3_var2 person3_var3 person3_var4 iteration_round
1:            1            1    21.931815    0.4904012            3            1    -2.261360   -2.3358434            5            1     5.493085     5.726929               1
2:            6            1    -5.039148   -9.4483417            7            1    -3.662336    5.8499795            3            1     5.297230    -2.875617               2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:27:00