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

多选项调研数据集无法使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:58:27