r-润滑数据框中的月份和小时过滤器



我一直在想如何使用lubridate&tidyverse包,用于在1月份的子集内过滤我的数据集中的特定小时(下午2点(。数据集本身有4年的气象数据,我正试图找到4年在1月下午2点的平均日气温

我的数据目前看起来是这样的:

数据

structure(list(Timestamp = c("2010-01-01 01:00:00", "2010-01-01 02:00:00", 
"2010-01-01 03:00:00", "2010-01-01 04:00:00", "2010-01-01 05:00:00", 
"2010-01-01 06:00:00"), Temp = c(44L, 44L, 44L, 44L, 43L, 42L
), Humid = c(100L, 96L, 93L, 89L, 89L, 83L), Precip = c(0L, 0L, 
0L, 0L, 0L, 0L)), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6"))
Timestamp    Temp    Humid      Precip 
1 2010-01-01 01:00:00      44      100           0 
2 2010-01-01 02:00:00      44       96           0 
3 2010-01-01 03:00:00      44       93           0 
4 2010-01-01 04:00:00      44       89           0 
5 2010-01-01 05:00:00      43       89           0 
6 2010-01-01 06:00:00      42       83           0 

我已经试着写过滤器很多次了,但在我写语法的方式上似乎有一个误解,我认为

例如

weather %>% 
mutate(gethour = hour(weather$Timestamp)) %>% 
filter(gethour == gethour("2:00 PM"))

每次我试图写一个简单的过滤器时,我都会出错,有人知道我做错了什么吗?

要获取所有年份一月下午2点的数据,可以使用:

library(dplyr)
library(lubridate)
weather %>% filter(hour(Timestamp) == 14 & month(Timestamp) == 1)

类似地,在R基中,我们可以使用subset:

subset(weather,format(Timestamp, "%H") == "14" & format(Timestamp,, "%m") == "01")

最新更新