【问题标题】:How get the average from three different datasets in R如何从 R 中的三个不同数据集中获取平均值
【发布时间】:2022-02-03 02:40:31
【问题描述】:

我在 3 个月前开始使用 R,并使用来自气象站的信息。现在我想从位于同一地点的车站的三个不同数据集中获取平均值。

我的数据框如下所示:

d1

Date_Measure Id Tmin Tmax Tmedia Smin Smax Smedia Hrmin Hrmax Hrmedia
2020-06-21 06:00:00 M03100245 19.10 19.97 19.335 25.04 71.14 44.930 83.78 84.28 84.280
2020-06-21 07:00:00 M03100245 20.31 21.69 20.915 89.69 144.34 108.220 81.76 83.78 82.510
2020-06-21 08:00:00 M03100245 21.87 24.64 22.840 115.56 263.31 183.035 76.70 81.76 79.985

d2

Date_Measure Id Tmin Tmax Tmedia Smin Smax Smedia Hrmin Hrmax Hrmedia
2020-06-21 06:00:00 M03100247 19.43 20.20 19.560 17.46 68.28 37.880 91.69 92.72 92.720
2020-06-21 07:00:00 M03100247 20.64 21.81 21.050 87.55 139.98 105.535 87.07 91.18 88.865
2020-06-21 08:00:00 M03100247 21.85 24.75 23.015 112.42 266.65 183.440 75.24 86.55 82.695

d3

Date_Measure Id Tmin Tmax Tmedia Smin Smax Smedia Hrmin Hrmax Hrmedia
2020-06-21 06:00:00 M03100296 19.39 20.16 19.560 29.18 77.94 48.900 89.61 90.69 90.690
2020-06-21 07:00:00 M03100296 20.55 21.53 20.805 95.95 154.43 116.065 85.82 89.07 86.370
2020-06-21 08:00:00 M03100296 21.62 24.88 23.035 122.26 280.18 194.635 71.22 85.28 79.870

我想在一个综合了这三者的单个通用表中为他们取每个日期和每个小时的平均值,我该怎么做这个过程?

【问题讨论】:

    标签: r dataset weather


    【解决方案1】:

    您可以组合 3 个数据框,从 Date_Measure 变量中提取日期和小时,并使用 across 取数值变量的平均值。

    library(dplyr)
    library(lubridate)
    
    bind_rows(d1, d2, d3) %>%
      #Or instead of writing them individually, we can also use
      #bind_rows(mget(paste0('d', 1:3))) %>%
      mutate(Date_Measure = ymd_hms(Date_Measure), 
             Date = as.Date(Date_Measure),
             Hour = hour(Date_Measure)) %>%
      group_by(Date, Hour) %>%
      summarise(across(Tmin:Hrmedia, mean), .groups = 'drop')
    
    #   Date        Hour  Tmin  Tmax Tmedia  Smin  Smax Smedia Hrmin Hrmax Hrmedia
    #  <date>     <int> <dbl> <dbl>  <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl>   <dbl>
    #1 2020-06-21     6  19.3  20.1   19.5  23.9  72.5   43.9  88.4  89.2    89.2
    #2 2020-06-21     7  20.5  21.7   20.9  91.1 146.   110.   84.9  88.0    85.9
    #3 2020-06-21     8  21.8  24.8   23.0 117.  270.   187.   74.4  84.5    80.8
    

    【讨论】:

      【解决方案2】:

      首先使所有数据集条目的数量相同。

      然后通过迭代日期和小时列来创建另一个数据集。

      我猜你需要通过适当的公式生成剩余的列。

      【讨论】:

      • 这样的答案通常包括所描述的操作的代码。这种通用解释更适合评论而不是答案
      • @Abhinav 感谢您的帮助,我会像您提到的那样尝试
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2021-10-03
      • 2017-04-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      相关资源
      最近更新 更多