润滑数据框中月份和小时的过滤器
Lubridate filter for month and hour in data frame
我一直在尝试弄清楚如何使用 lubridate & tidyverse 包来过滤我的数据集中 1 月份子集中的特定时间(下午 2 点)。数据集本身有 4 年的气象数据,我试图找到 4 年 1 月下午 2 点的平均每日 AirTemp
我的数据目前是这样的:
数据
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"))
每次我尝试编写一个简单的过滤器时都会出错,有人知道我做错了什么吗?
要获取所有年份 1 月份下午 2 点的数据,您可以使用:
library(dplyr)
library(lubridate)
weather %>% filter(hour(Timestamp) == 14 & month(Timestamp) == 1)
类似地,在 base R 中,我们可以使用 subset
:
subset(weather,format(Timestamp, "%H") == "14" & format(Timestamp,, "%m") == "01")
我一直在尝试弄清楚如何使用 lubridate & tidyverse 包来过滤我的数据集中 1 月份子集中的特定时间(下午 2 点)。数据集本身有 4 年的气象数据,我试图找到 4 年 1 月下午 2 点的平均每日 AirTemp
我的数据目前是这样的:
数据
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"))
每次我尝试编写一个简单的过滤器时都会出错,有人知道我做错了什么吗?
要获取所有年份 1 月份下午 2 点的数据,您可以使用:
library(dplyr)
library(lubridate)
weather %>% filter(hour(Timestamp) == 14 & month(Timestamp) == 1)
类似地,在 base R 中,我们可以使用 subset
:
subset(weather,format(Timestamp, "%H") == "14" & format(Timestamp,, "%m") == "01")