多选项调研数据集无法使用pivot_wider重塑的技术求助
解决多选项问卷数据的宽表重塑问题
针对你的多选项问卷数据,由于同一per_id和quest对应多个answ,直接使用pivot_wider会因重复键值报错,我们可以通过给每个问题下的回答添加序号的方式解决,具体步骤如下:
1. 加载所需R包
需要用到dplyr做分组操作,tidyr完成数据重塑:
library(dplyr) library(tidyr)
2. 数据处理步骤
先给每个per_id+quest组内的回答添加序号,再执行转宽操作:
# 给每个受访者的每个问题下的回答编号 df_with_num <- df %>% group_by(per_id, quest) %>% mutate(answ_seq = row_number()) %>% ungroup() # 转成宽表结构 df_wide <- df_with_num %>% pivot_wider( id_cols = per_id, names_from = c(quest, answ_seq), values_from = answ, values_fill = NA # 无对应回答的位置填充NA )
3. 结果示例
运行后得到的宽表结构如下(以部分数据为例):
# 查看结果 print(df_wide)
输出示例:
# A tibble: 9 × 7 per_id A_1 A_2 A_3 B_1 B_2 B_3 <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 0012 Self Mother NA NA NA NA 2 0023 Self Father NA NA NA NA 3 0045 Self Sister NA NA NA NA 4 0003 Self Father Daughter NA NA NA 5 0004 Self Father NA X1 X1 NA 6 0001 NA NA NA X1 Y1 NA 7 0005 NA NA NA X1 Y1 NA 8 0546 NA NA NA Z1 Z2 NA
这样就实现了每个per_id对应各问题多选项的宽表结构,同一问题下的多个回答会以问题_序号的形式作为列名呈现。
内容的提问来源于stack exchange,提问作者iHermes
相关产品推荐
相关产品推荐

