宽格式数据框到时间序列数据框
dataframe in wideformat to dataframe of timeseries
我目前正在努力将我的数据集重塑为首选结果。假设我从以下数据集开始:
library(tsbox)
library(dplyr)
library(tidyr)
# create df that matches my format
df1 <- ts_wide(ts_df(ts_c(mdeaths)))
df1$id <- 1
df2 <- ts_wide(ts_df(ts_c(mdeaths)))
df2$id <- 2
df <- rbind(df1, df2)
现在这个数据集有一个日期列,一个值列和一个“id”列,它应该指定哪些date/value点属于同一个观察对象。我现在想将我的数据集重塑为 2x2 数据框,其中第一列是 id,而第二列是时间序列对象(对应于该 id 的 date/value)。为此,我尝试了以下操作:
# create a new df, with two cols (id and ts)
df_ts <- df %>%
group_by(id) %>%
nest()
nest 命令创建了一个“数据框的列表列”,这并不是我想要的。我知道可以通过 ts(data$value, data$date) 定义一个 ts,但我不知道如何在 group_by(id) 函数之后集成它。谁能帮我如何将此列变成 ts 对象而不是数据框?我是 R 的新手,感谢任何形式的帮助。
提前致谢
如果你有一个非原子数据类型,它必须是一个列表列。
如果您想要 ts
对象的列表列,您可以:
df %>%
group_by(id) %>%
summarize(ts = list(ts(value, time)))
继续你的管道你可以:
df %>%
group_by(id) %>%
nest() %>%
mutate(data = purrr::map(data, with, ts(value, time)))
我目前正在努力将我的数据集重塑为首选结果。假设我从以下数据集开始:
library(tsbox)
library(dplyr)
library(tidyr)
# create df that matches my format
df1 <- ts_wide(ts_df(ts_c(mdeaths)))
df1$id <- 1
df2 <- ts_wide(ts_df(ts_c(mdeaths)))
df2$id <- 2
df <- rbind(df1, df2)
现在这个数据集有一个日期列,一个值列和一个“id”列,它应该指定哪些date/value点属于同一个观察对象。我现在想将我的数据集重塑为 2x2 数据框,其中第一列是 id,而第二列是时间序列对象(对应于该 id 的 date/value)。为此,我尝试了以下操作:
# create a new df, with two cols (id and ts)
df_ts <- df %>%
group_by(id) %>%
nest()
nest 命令创建了一个“数据框的列表列”,这并不是我想要的。我知道可以通过 ts(data$value, data$date) 定义一个 ts,但我不知道如何在 group_by(id) 函数之后集成它。谁能帮我如何将此列变成 ts 对象而不是数据框?我是 R 的新手,感谢任何形式的帮助。 提前致谢
如果你有一个非原子数据类型,它必须是一个列表列。
如果您想要 ts
对象的列表列,您可以:
df %>%
group_by(id) %>%
summarize(ts = list(ts(value, time)))
继续你的管道你可以:
df %>%
group_by(id) %>%
nest() %>%
mutate(data = purrr::map(data, with, ts(value, time)))