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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:01