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

如何在R中将非标准结构的CSV数据转换为规整二维表格

该需求完全可以实现,你可以选择以下两种R方案处理:

方案1:tidyverse 简洁实现

# 加载依赖包
library(tidyverse)

# 读取原始CSV为单列数据
raw_data <- read_csv("你的本地文件路径.csv", col_names = "content", show_col_types = FALSE)

processed_data <- raw_data %>%
  # 每两行划为一组,分别对应用户ID行、答案行
  mutate(group_id = rep(1:(n()/2), each = 2),
         type = rep(c("userid", "answers"), n()/2)) %>%
  # 同组两行转为两列
  pivot_wider(names_from = type, values_from = content) %>%
  # 按反斜杠拆分答案为独立列,自动生成q1~qN的列名
  separate(answers, into = paste0("q", 1:70), sep = "\\\\") %>%
  select(-group_id)

方案2:基础R实现(无需额外安装包)

# 逐行读取原始文件
raw_data <- readLines("你的本地文件路径.csv")

# 提取所有用户ID(奇数行)
userid <- raw_data[seq(1, length(raw_data), 2)]
# 提取所有答案行(偶数行)
answer_lines <- raw_data[seq(2, length(raw_data), 2)]
# 拆分所有答案行并转为数据框
answer_df <- do.call(rbind, strsplit(answer_lines, "\\\\"))
# 设置答案列名
colnames(answer_df) <- paste0("q", 1:ncol(answer_df))
# 合并用户ID和答案得到最终规整表格
processed_data <- cbind(data.frame(userid = userid), answer_df)

注意事项

  • R中匹配反斜杠分隔符需要写为\\\\,因为反斜杠本身是转义字符,需要多重转义才能匹配
  • 如果你不确定具体题量,可以把paste0("q", 1:70)替换为动态取值的代码,自动适配所有题目数量
  • 3万条数据量级极小,上述两种方案都不会有性能问题,运行时间在秒级

内容的提问来源于stack exchange,提问作者Caitlyn Arnold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:02