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

R如何将宽格式dataframe转换为按id分组存储ts对象的dataframe

你可以在nest()之后配合遍历函数对每个分组的嵌套数据框做转换,将其转为ts对象即可。
因为你已经引入了tsbox包,推荐用自带的ts_ts()函数做转换,它会自动识别时间序列的起止时间、频率,不需要手动配置参数,完整示例如下:

library(purrr) # 用于处理列表列,如果你是tidyverse用户默认已经加载

df_ts <- df %>% 
  group_by(id) %>%
  nest() %>% 
  # 遍历每个分组的嵌套数据,转为ts对象
  mutate(ts = purrr::map(data, tsbox::ts_ts)) %>% 
  # 只保留需要的两列
  select(id, ts)

如果不想额外引入purrr,也可以用base R的lapply实现:

df_ts <- df %>% 
  group_by(id) %>%
  nest() %>% 
  mutate(ts = lapply(data, function(x) tsbox::ts_ts(x))) %>% 
  select(id, ts)

你可以执行以下代码验证输出结果符合要求:

# 查看ts列第一个元素的类型
class(df_ts$ts[[1]])
# 预期输出:[1] "ts"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:27:03