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

如何在R中将指定长表转换为目标宽表格式

R语言实现长表转宽表(对应SPSS的宽表转换需求)

首先还原你的原始数据:

# 构造原始长表数据
library(tibble)
original_data <- tibble(
  in_key = c(42, 42, 43, 43, 44, 44),
  in_id = rep("Text", 6),
  ro_id = c(1, 2, 3, 4, 5, 6),
  data = c(1, 1, 0, 0, 0, 0)
)

接下来用tidyr包的pivot_wider()函数完成转换,这是R中处理长转宽最常用的方法,完全匹配你的需求:

library(tidyr)

# 转换为目标宽表
wide_data <- original_data %>%
  pivot_wider(
    id_cols = c(in_key, in_id),  # 保留的分组列
    names_from = ro_id,          # 用于生成新列名的原始列
    names_prefix = "ro_",        # 给新列名添加指定前缀
    values_from = data           # 新列取值对应的原始列
  )

运行后得到的wide_data结构如下:

in_keyin_idro_1ro_2ro_3ro_4ro_5ro_6
42Text11NANANANA
43TextNANA00NANA
44TextNANANANA00

如果需要把未匹配项的NA替换为0(贴合你的原始数据逻辑),可以添加values_fill参数:

wide_data <- original_data %>%
  pivot_wider(
    id_cols = c(in_key, in_id),
    names_from = ro_id,
    names_prefix = "ro_",
    values_from = data,
    values_fill = 0  # 将NA填充为0
  )

调整后得到的结果完全符合预期:

in_keyin_idro_1ro_2ro_3ro_4ro_5ro_6
42Text110000
43Text000000
44Text000000

如果你的环境未安装tidyr包,先运行install.packages("tidyr")完成安装即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:35:16