R语言使用reshape函数实现含多额外变量长表转宽表的方法咨询
解决方案
你只需要把每个用户唯一不变的固定属性都加入idvar参数即可,根据你是否需要保留随问题变化的变量,分为两种常用场景:
- 仅保留个人固定属性+问题答案(和你之前的输出逻辑一致,仅新增用户固定信息列)
每个UserID对应的Full Name、DOB、EncounterID都是固定值,把这些字段都加入idvar向量,告诉reshape这些是不需要转置的分组标识即可:
运行后输出结果会自动保留用户的固定属性列,每个问题对应一列存储回答,列名默认带service_L_to_W<- reshape(data=service, idvar = c("UserID", "Full Name", "DOB", "EncounterID"), timevar = "labelnospaces", v.names = "responses", direction = "wide")responses.前缀,你可以按需手动修改列名。 - 需要保留所有随问题变化的字段
如果你还需要把每个问题对应的QuestionID、Name、Type也转为宽格式,只需要修改v.names参数,加入所有要转置的变量即可:service_L_to_W<- reshape(data=service, idvar = c("UserID", "Full Name", "DOB", "EncounterID"), timevar = "labelnospaces", v.names = c("responses", "QuestionID", "Name", "Type"), direction = "wide")
注意事项
如果数据中存在同一个idvar分组下有重复的labelnospaces值,运行时会报错,需要先处理重复的问题记录再执行转置。
内容的提问来源于stack exchange,提问作者Ash S
相关产品推荐
相关产品推荐

