【问题标题】:Averaging time series groups and plotting them against one another平均时间序列组并将它们相互绘制
【发布时间】:2020-06-19 13:00:27
【问题描述】:

data 下方创建的时间序列数据中,个体(用唯一的ID 表示)是从两个群体(NCSC)中抽取的。所有个体都有相同数量的观察。我想对属于同一“州”(平均线)的所有个人的每个“时间点”的数据进行平均,并且我想将每个州的平均线相互绘制。我希望它看起来像这样:

library(tidyverse)
set.seed(123)
ID <- rep(1:10, each = 500)
Time = rep(c(1:500),10)
Location = rep(c("NC","SC"), each = 2500)
Var <- rnorm(5000)
data <- data.frame(
  ID = factor(ID),
  Time = Time,
  State = Location,
  Variable = Var
)

【问题讨论】:

    标签: r time-series tidyverse


    【解决方案1】:

    我建议您熟悉各种dplyr 函数。具体来说,group_bysummarise。您可能需要阅读:Introduction to dplyr 或浏览 this series 的博文。

    简而言之,我们按TimeState 变量对数据进行分组,然后用平均值(即mean(Variable))汇总这些数据。为了绘制数据,我们将 Time 放在 x 轴上,将新创建的 avg_var 放在我们的 y 轴上,并使用 State 表示颜色。这些被指定为我们图表的美学(即aes(...)。最后,我们添加带有geom_line() 的线条几何图形以在我们的可视化中呈现线条。

    data %>% 
        group_by(Time, State) %>%
        summarise(avg_var = mean(Variable)) %>% 
        ggplot(aes(x = Time, y = avg_var, color = State)) +
        geom_line()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2014-08-22
      相关资源
      最近更新 更多