将 tbl_df 转换为 ts 列表(时间序列)
Converting a tbl_df to a list of ts (Time-series)
有没有办法将这个 tbl_df (df_ex
) 转换为 ts 列表(比如这个:list_ts_ex
)?
df_ex
的数据:
library(OECD)
dataset <- "MEI"
filter_list <- list("", "LORSGPNO", "STSA", "M")
df_ex <- get_dataset(dataset = dataset, filter = filter_list)
我想实现类似的东西 (list_ts_ex
):
library(BGVAR)
data(monthlyData)
list_ts_ex <- monthlyData
我可以提取每个国家并创建自己的 ts
,像这样:
BRLGDP <- subset(df, LOCATION == "BRA") %>%
select(obsTime, obsValue)
colnames(BRLGDP) <- c("Date", "GDP")
BRLGDP$Date <- as.Date(as.yearmon(BRLGDP$Date, format = "%Y-%m"), frac = 1)
BRLGDP_ts <- ts(BRLGDP[-1], start = as.yearmon(BRLGDP$Date[1]), frequency = 12)
稍后我可以将它们放在一起以创建时间序列对象列表。不过,我认为有更有效的方法可以做到这一点。我就是找不到解决办法。
自己找到答案:
library(dplyr)
library(zoo)
df_ex <- df_ex %>%
split(.$LOCATION) %>%
lapply(function(.x) ts(zoo(.x$obsValue, .x$obsTime), start = c(2020, 1), frequency = 12))
这可能对其他人有帮助。
有没有办法将这个 tbl_df (df_ex
) 转换为 ts 列表(比如这个:list_ts_ex
)?
df_ex
的数据:
library(OECD)
dataset <- "MEI"
filter_list <- list("", "LORSGPNO", "STSA", "M")
df_ex <- get_dataset(dataset = dataset, filter = filter_list)
我想实现类似的东西 (list_ts_ex
):
library(BGVAR)
data(monthlyData)
list_ts_ex <- monthlyData
我可以提取每个国家并创建自己的 ts
,像这样:
BRLGDP <- subset(df, LOCATION == "BRA") %>%
select(obsTime, obsValue)
colnames(BRLGDP) <- c("Date", "GDP")
BRLGDP$Date <- as.Date(as.yearmon(BRLGDP$Date, format = "%Y-%m"), frac = 1)
BRLGDP_ts <- ts(BRLGDP[-1], start = as.yearmon(BRLGDP$Date[1]), frequency = 12)
稍后我可以将它们放在一起以创建时间序列对象列表。不过,我认为有更有效的方法可以做到这一点。我就是找不到解决办法。
自己找到答案:
library(dplyr)
library(zoo)
df_ex <- df_ex %>%
split(.$LOCATION) %>%
lapply(function(.x) ts(zoo(.x$obsValue, .x$obsTime), start = c(2020, 1), frequency = 12))
这可能对其他人有帮助。