使用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
相关产品推荐
相关产品推荐

