润滑数据帧中月份和小时的过滤器

问题描述

我一直在尝试找出如何使用lubridate&tidyverse软件包在一月月份的子集中对数据集中的特定小时(下午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,43L,42L
),Humid = c(100L,96L,93L,89L,83L),Precip = c(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)

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...