如何从 R 中的三个不同数据集获取平均值
How get the average from three different datasets in R
我从 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
我想将每个日期和每个小时的平均值合并为一个综合 table,我该怎么做这个过程?
首先让所有数据集条目的数量相同。
然后通过迭代日期和小时列创建另一个数据集。
我想您需要通过适当的公式生成剩余的列。
您可以组合 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
我从 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 |
我想将每个日期和每个小时的平均值合并为一个综合 table,我该怎么做这个过程?
首先让所有数据集条目的数量相同。
然后通过迭代日期和小时列创建另一个数据集。
我想您需要通过适当的公式生成剩余的列。
您可以组合 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