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
相关产品推荐
相关产品推荐

