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

如何用R语言reshape()函数实现长表转宽表(仅用标准评估)

问题描述

现有如下长格式的R数据集:

set.seed(2023)

ID<-c(1,1,2,2,3,3,4,4,5,5)
State<-c("NY","NY","NC","NC","TX","TX","VA","VA","SC","SC")
Gender<-c("Husband","Wife","Husband","Wife","Husband","Wife","Husband","Wife","Husband","Wife")
stress<-rnorm(10,0,1)
satisfaction<-rnorm(10,0,1)

data<-data.frame(ID,State,Gender,stress,satisfaction)

要求仅用基础R的reshape()函数,将其转换成如下结构的宽格式数据:

ID<-1:5
State<-c("NY","NC","TX","VA","SC")
Husband_stress<-rnorm(5,0,1)
Wife_stress<-rnorm(5,0,1)
Husband_satisfaction<-rnorm(5,0,1)
Wife_satisfaction<-rnorm(5,0,1)

results<-data.frame(ID,State,Husband_stress,Wife_stress,Husband_satisfaction,Wife_satisfaction)
解决方案

直接用基础R的reshape()函数就能完成转换,代码如下:

wide_data <- reshape(data,
                     idvar = c("ID", "State"),  # 用ID和State作为每组的唯一标识,对应宽格式的一行
                     timevar = "Gender",        # 用Gender的不同取值(Husband/Wife)生成新列名前缀
                     direction = "wide")        # 指定转换方向为宽格式

运行这段代码后,wide_data的结构和目标的results完全匹配,列名会自动生成为Husband_stress、Wife_stress这类符合要求的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:20