我可以在未分组的多个行上调用summarise()吗?

时间:2019-04-30 16:37:43

标签: r dplyr

我有一个全年每15分钟进行一次温度测量的数据。我已经计算出一年中这些小时的平均温度。我想计算的是每小时的平均数,而不是每15分钟的平均数。

我目前计算的是:

    Hour    Average_Temperature 
 1  0:00:00 14.35748
 2  0:15:00 14.30943
 3  0:30:00 14.18519
 4  0:45:00 14.04781
 5  1:00:00 13.93074
 6  1:15:00 13.78855
 7  1:30:00 13.67138
 8  1:45:00 13.54646

我仅使用dplyr软件包就获得了第一个表。我在Hour变量上调用group_by(),然后在summarise()中调用。

AvgHr <- mydata %>% group_by(Hour) %>% summarise(Average_Temperature = mean(Temp))

我不知道该怎么做,是否可以对我进行分组的嵌套分组,然后平均每个整小时而不是每个单独的四分之一小时。然后,在上表中,我将考虑在同一时间0:00:00下观察0:00:00、0:15:00、0:30:00、0:45:00的值。

接下来我将得到的是:

    Hour    Average_Temperature
1   0:00:00 14.xxxxx
2   1:00:00 13.xxxxx
3   2:00:00 13.xxxxx

1 个答案:

答案 0 :(得分:2)

是的,只需将“小时”作为周期对象而不是字符串读取,提取小时,然后进行分组和汇总:

library(tidyverse)
library(lubridate)

#> df <- tribble(
#> ~Hour, ~Average_Temperature, 
#> "0:00:00", 14.35748,
#> "0:15:00", 14.30943,
#> "0:30:00", 14.18519,
#> "0:45:00", 14.04781,
#> "1:00:00", 13.93074,
#> "1:15:00", 13.78855,
#> "1:30:00", 13.67138,
#> "1:45:00", 13.54646)

df %>% 
  mutate(Time = hms(Hour), Hour = hour(Time)) %>% 
  group_by(Hour) %>% 
  summarize(H_Average_Temp = mean(Average_Temperature ))
#> # A tibble: 2 x 2
#>    Hour H_Average_Temp
#>   <dbl>          <dbl>
#> 1     0           14.2
#> 2     1           13.7