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

如何使用R调整数据结构 实现宽表转指定格式长表

问题内容

我当前的数据结构如下:

# A tibble: 92 × 9
   state      category           `1978` `1983` `1988` `1993`  `1999` `2006` `2013`
   <chr>      <chr>              <chr>  <chr>  <chr>  <chr>   <chr>  <chr>  <chr> 
 1 Alabama    Jail population    3,642  3,838  4,363  7,873   9,327  11,430 10,436
 2 Alabama    Percent pre-trial  28%    47%    57%    48%     58%    70%    68% 

期望得到的目标数据结构如下:

state     jail     pretrial     year
Alabama   3642      28%         1978    
Alabama   3838      47%         1983    
Alabama   4363      57%         1988    
Alabama   7873      48%         1993    
Alabama   9327      58%         1999    
Alabama   11430     70%         2006    
Alabama   10436     68%         2013  

我多次尝试使用dplyr的pivot_wider / pivot_longer函数进行调整,得到的结果已经接近预期但始终无法完全符合要求,在此问题上花费了大量时间仍未解决。我不需要直接的可运行代码方案,目前甚至找不到同类参考案例,请问这类数据转换操作的通用名称是什么?我可以自行搜索相关内容学习实现,只是不清楚该搜索什么关键词。


解答

这类操作属于多指标表格的组合重塑场景,你可以搜索以下关键词找到对应学习资料:

  • 宽表转长表后再转宽表 / 数据逆透视+透视组合操作
  • pivot_longer + pivot_wider 组合使用
  • 多指标面板数据格式转换
  • tidyr 半结构化表格整形

操作逻辑本质是先把所有年度列通过pivot_longer拉平为「年份-数值」的长结构,再通过pivot_wider将category列的不同指标值转为新的列名,对应匹配各自的数值即可得到目标结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:18:02