【问题标题】:conditionally aggregate columns using tidyverse for large time series dataset使用 tidyverse 对大型时间序列数据集有条件地聚合列
【发布时间】:2019-07-13 06:32:27
【问题描述】:

在查看了其他一些问题并阅读了一些指南后,我无法找到适合我的具体问题的解决方案。这是开始的数据示例:

data <- data.frame(
        Date = sample(c("1993-07-05", "1993-07-05", "1993-07-05", "1993-08-30", "1993-08-30", "1993-08-30", "1993-08-30", "1993-09-04", "1993-09-04")),
        Site = sample(c("1", "1", "1", "1", "1", "1", "1", "1", "1")),
        Station = sample(c("1", "2", "3", "1", "2", "3", "4", "1", "2")),   
        Oxygen = sample(c("0.9", "0.4", "4.2", "5.6", "7.3", "4.3", "9.5", "5.3", "0.3")))

我想对嵌套在与日期相对应的站点内的站点的所有氧气值进行平均。我的数据集有几千行,就像在示例中一样,站的数量是奇数,并且日期的长度是不均匀的。

我正在寻找的输出是“日期 -> 站点 -> 平均氧气”之类的列,在新版本的时间序列中完全不需要站列。

任何帮助将不胜感激!

【问题讨论】:

    标签: r dplyr time-series tidyverse


    【解决方案1】:

    按“Site”、“Date”分组后,得到“Oxygen”的mean(转换为numeric后——即factor列)

    library(tidyverse)
    data %>%
       group_by(Site, Date) %>% 
       summarise(AverageOxygen = mean(as.numeric(as.character(Oxygen))))
    # A tibble: 3 x 3
    # Groups:   Site [1]
    #  Site  Date       AverageOxygen
    #  <fct> <fct>              <dbl>
    #1 1     1993-07-05          3.97
    #2 1     1993-08-30          5.2 
    #3 1     1993-09-04          2.55
    

    【讨论】:

    • 嗨,我只是在检查数学,似乎值不正确?对于“1993-07-05”,当天的站 1、2、3 的平均值为 1.83。我认为代码没有考虑到站也对应于日期?
    • @SecretBeach。您有一个 sample 数据而没有 set.seed。所以你的数据可能与我的不同
    • 哦,原来如此。谢谢!
    【解决方案2】:

    试试:

    library(hablar)
    library(tidyverse)
    
    data %>% 
      retype() %>% 
      group_by(Site, Date) %>% 
      summarize(AverageOxygen = mean(Oxygen))
    

    给你:

    # A tibble: 3 x 3
    # Groups:   Site [?]
       Site Date       AverageOxygen
      <int> <date>             <dbl>
    1     1 1993-07-05          4.7 
    2     1 1993-08-30          3.55
    3     1 1993-09-04          4.75
    

    【讨论】:

    • 嗨,我只是在检查数学,似乎值不正确?对于“1993-07-05”,当天的站 1、2、3 的平均值为 1.83。我认为代码没有考虑到站也对应于日期?
    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2021-04-02
    • 2017-06-21
    • 1970-01-01
    相关资源
    最近更新 更多