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

R语言Dataframe重组:将重复唯一值合并为行实现长表转宽表

解决方案

方案1:使用tidyverse(推荐,代码更简洁)

# 加载依赖包,未安装的话先运行 install.packages("tidyverse")
library(tidyverse)

# 长表转宽表,缺失值自动填充为NA
wide_df <- dat %>%
  pivot_wider(
    id_cols = Participant, # 若实际列名是小写participant请自行修改
    names_from = question_id,
    values_from = question_answer
  )

# 按q1到q96的数字顺序排序列,避免字符串排序下q10排在q2前的问题
q_col_order <- stringr::str_sort(names(wide_df)[-1], numeric = TRUE)
wide_df <- wide_df[, c("Participant", q_col_order)]

方案2:使用R原生函数(无需安装额外包)

# 长表转宽表
wide_df <- reshape(
  dat,
  idvar = "Participant", # 若实际列名是小写participant请自行修改
  timevar = "question_id",
  direction = "wide"
)
# 去除自动生成的列名前缀
names(wide_df) <- sub("^question_answer\\.", "", names(wide_df))

# 按q1到q96的数字顺序排序列
q_cols <- names(wide_df)[-1]
q_num <- as.integer(sub("^q", "", q_cols))
wide_df <- wide_df[, c("Participant", q_cols[order(q_num)])]

如果需要将NA替换为空字符串,可在上述代码运行结束后添加:

wide_df[is.na(wide_df)] <- ""

内容的提问来源于stack exchange,提问作者Nicholas Kovacs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:03