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

R语言离散选择实验数据格式转换求助(dplyr工具)

用dplyr+tidyr转换离散选择实验数据格式

假设你的原始数据框名为dce_data,结构是每一行对应1个受访者,包含多个选项的选择状态和属性(比如choice1、price1、quality1对应选项1,choice2、price2、quality2对应选项2,以此类推)。以下是转换为目标长格式的代码:

# 加载所需包
library(dplyr)
library(tidyr)

# 转换格式
long_data <- dce_data %>%
  # 保留受访者ID列(假设列名为resp_id),将其他列按选项编号分组转长
  pivot_longer(
    cols = -resp_id,
    names_to = c(".value", "option"),
    names_pattern = "(.*)(\\d)"
  ) %>%
  # 把choice列转为0/1数值型(如果原始是字符格式),按需调整
  mutate(choice = as.numeric(choice)) %>%
  # 按受访者ID和选项编号排序
  arrange(resp_id, option)

代码说明:

  • pivot_longer是核心转换函数:
    • cols = -resp_id:指定除受访者ID列外,其余列都参与格式转换
    • names_to = c(".value", "option"):将列名拆分为两部分,.value对应属性名称(如price、quality),option对应选项编号(1、2...)
    • names_pattern = "(.*)(\\d)":用正则表达式匹配列名,分离属性名和末尾的数字编号(比如price1拆为price和1)
  • 如果你的原始列名规则不同(比如是choice_option1而非choice1),需调整names_pattern为"(.*)_option(\\d)"
  • 若原始数据无单独的受访者ID列,可先用mutate(resp_id = row_number())生成唯一标识

内容的提问来源于stack exchange,提问作者tahsin hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:22:33