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

在R中如何自定义重塑Dataframe以获得目标格式?

解决方案

要实现你想要的格式,核心是先给每个Para分组内的Val添加序号标识,再进行重塑。下面提供两种常用实现方式:

方法1:使用reshape2包(你当前在用的包)

先给数据添加组内序号,再用dcast完成重塑:

library(reshape2)    
dat = data.frame('Para' = c('A', 'A', 'B', 'B', 'B'), 'Val' = c(.3, .45, .34, 12, 67))

# 给每个Para组内的Val生成序号(Val1、Val2...的基础)
dat$id <- ave(1:nrow(dat), dat$Para, FUN = seq_along)

# 执行重塑
dcast(dat, Para ~ paste0("Val", id), value.var = "Val")

运行结果:

Para Val1 Val2 Val3
1    A  0.3 0.45   NA
2    B 0.34 12.0 67.0

方法2:使用tidyverse工具包(语法更直观)

用dplyr分组生成序号,再用tidyr::pivot_wider完成重塑:

library(dplyr)
library(tidyr)

dat = data.frame('Para' = c('A', 'A', 'B', 'B', 'B'), 'Val' = c(.3, .45, .34, 12, 67))

dat %>%
  group_by(Para) %>%
  mutate(id = paste0("Val", row_number())) %>%
  pivot_wider(names_from = id, values_from = Val)

运行结果与方法1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:27:51