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

使用R语言reshape()函数实现宽表转长表遇问题求助

问题排查与解决

首先看你的原始数据生成代码:

set.seed(123)
data <- data.frame(ID = 1:10,
                   weight_hus = rnorm(10, 0, 1),
                   weight_wife = rnorm(10, 0, 1),
                   height_hus = rnorm(10, 0, 1),
                   height_wife = rnorm(10, 0, 1))

你尝试用reshape()函数转换数据,但代码存在几个关键错误:

  • 参数拼写错误:seperator是错误写法,base R的reshape()函数中,指定列名分隔符的参数是sep。
  • timevar与times参数混淆:timevar是用来定义新生成的分组变量名称,而具体的分组值(hus/wife)需要用times参数指定,你直接把分组值传给timevar会导致语法错误。
  • v.name参数不匹配:你的原始数据有weight和height两类指标,v.name需要对应这两个指标的名称,而不是单个"body",这样才能正确匹配拆分后的列。

修正后的代码如下:

data2 <- reshape(data = data,
                 idvar = "ID",
                 sep = "_",  # 修正参数拼写
                 direction = "long",
                 v.name = c("weight", "height"),  # 对应原始数据的两类指标
                 timevar = "role",  # 新生成的分组变量名称
                 times = c("hus", "wife")  # 分组的具体取值
               )

运行这段代码后,会得到长格式的数据:ID作为唯一标识,role列区分hus/wife,weight和height列对应各自的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:50:59