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

在R语言中整理数据:将长格式数据框转换为宽格式

解决方案

首先补全你原始代码中缺失的id列定义(因为你的代码未生成id,而需求是100个唯一id):

# 生成100个唯一id,重复两次对应old和new系统
id <- rep(1:100, 2)

# 创建旧/新系统列并转为因子
old_new <- rep(c("old", "new"), each = 100)
old_new <- as.factor(old_new)

# 生成0/1随机列
random <- sample(0:1, size = 200, replace = TRUE)

# 合并为数据框
data <- data.frame(id, old_new, random)

接下来使用tidyr::pivot_wider即可实现你需要的格式,核心是明确列名和值的来源:

library(tidyr)

# 转换为宽格式
wide_data <- pivot_wider(
  data,
  id_cols = id,          # 以id作为唯一标识列
  names_from = old_new,  # 将old_new的取值作为新列名
  values_from = random   # 将random列的值填充到对应新列中
)

转换后的wide_data包含3列:id(100个唯一值)、old(旧系统对应的0/1值)、new(新系统对应的0/1值),完全符合你的需求。

如果你之前使用pivot_wider未成功,大概率是未正确指定id_cols参数,或是数据中存在同一id对应多个相同old_new值的冲突(但你的数据构造逻辑里每个id仅对应old和new各一次,不会出现这个问题)。


内容的提问来源于stack exchange,提问作者James B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:13:18