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

在R中将长格式时间序列转换为宽格式的方法?

长格式转指定宽格式的解决方案

你可以用tidyverse包中的pivot_wider()函数来实现,这个方法完全适配大规模/复杂数据集,不需要手动拼接向量。

具体代码实现:

首先确保加载tidyverse包:

library(tidyverse)

然后直接对ts_big进行转换:

ts_wide <- ts_big %>%
  pivot_wider(
    id_cols = dates,  # 以日期为分组依据
    names_from = types,  # 用types列的值作为新列名的一部分
    values_from = c(numbers_1, numbers_2),  # 需要转换的数值列
    names_glue = "{types}_{.value}"  # 定义新列名的格式:类型_数值列名
  )

转换后的结果:

运行上述代码后,ts_wide的结构完全符合你的需求:

# A tibble: 4 × 5
  dates      A_numbers_1 A_numbers_2 B_numbers_1 B_numbers_2
  <chr>            <dbl>       <dbl>       <dbl>       <dbl>
1 2023-01-01         1           3           0.3         3  
2 2023-02-01         2.8         5           0.9         5  
3 2023-03-01         2.9         7.9        NA          NA  
4 2023-04-01         2           0.9        NA          NA  

适配复杂场景的优势:

  • 不管有多少种types类别,或是多少个类似numbers_1/numbers_2的数值列,只需调整names_from和values_from的参数即可,无需手动处理每一列
  • 缺失的观测值会自动用NA填充,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:53:23