在R中按特定时间段筛选
我有一列完整的日期和时间,即2019-01-01 00:00:00。我如何在特定的时间范围内过滤,而不考虑日期 例如,仅显示介于07:30:00和19:30:00之间的数据在R中按特定时间段筛选,r,dplyr,R,Dplyr,我有一列完整的日期和时间,即2019-01-01 00:00:00。我如何在特定的时间范围内过滤,而不考虑日期 例如,仅显示介于07:30:00和19:30:00之间的数据 谢谢你的帮助。我对R完全是个新手,我正在努力解决这个问题 这是一个完全可复制的示例 # install.packages('dplyr') library(dplyr) basedate = as.numeric(as.POSIXct('2019-11-11 11:11:11')) # choose a date set.s
谢谢你的帮助。我对R完全是个新手,我正在努力解决这个问题 这是一个完全可复制的示例
# install.packages('dplyr')
library(dplyr)
basedate = as.numeric(as.POSIXct('2019-11-11 11:11:11')) # choose a date
set.seed(1) # make it the same every time when selecting random dates
dates = # this generates 200 random dates from the base date
data.frame(stringsAsFactors = F, date = as.POSIXct(basedate + 60*60*96*runif(200), origin = '1970-01-01')) %>%
arrange(date) %>%
mutate(timeonly = format(date, format = '%H:%M:%S')) %>%
mutate(keep = timeonly > '07:30' & timeonly < '19:30') %>%
filter(keep)
#head(dates)
# date timeonly keep
#1 2019-11-11 12:26:30 12:26:30 TRUE
#2 2019-11-11 12:28:18 12:28:18 TRUE
#3 2019-11-11 13:25:34 13:25:34 TRUE
#4 2019-11-11 14:35:53 14:35:53 TRUE
#5 2019-11-11 16:50:38 16:50:38 TRUE
#6 2019-11-11 17:07:04 17:07:04 TRUE
#安装程序包('dplyr'))
图书馆(dplyr)
basedate=as.numeric(as.POSIXct('2019-11-11 11:11:11'))#选择一个日期
设置种子(1)#每次选择随机日期时都保持相同
dates=#这将从基准日期生成200个随机日期
data.frame(stringsAsFactors=F,date=as.POSIXct(basedate+60*60*96*runif(200),origin='1970-01-01'))%>%
安排(日期)%>%
mutate(timeonly=format(日期,格式='%H:%M:%S'))%>%
突变(keep=timeonly>'07:30'和timeonly<'19:30')%>%
过滤(保留)
#总目(日期)
#日期时间只保留
#2019-11-11 12:26:30 12:26:30正确
#2019-11-11 12:28:18 12:28:18正确
#2019-11-11 13:25:34 13:25:34正确
#4 2019-11-11 14:35:53 14:35:53正确
#5 2019-11-11 16:50:38 16:50:38正确
#6 2019-11-11 17:07:04 17:07:04正确
我的解决方案是将时间分割成一个新的变量,并使用hms
计算不等式
library(tidyverse)
library(hms)
df <- tibble(d = c('2010-12-13 15:30:30','2018-05-13 01:20:30', '2015-03-22 08:55:18'))
df %>%
separate(d, into = c('date','time'), sep = ' ') %>%
mutate(
time = as_hms(time)
) %>%
filter(time > parse_hms('07:30:30') & time < parse_hms('19:30:30'))
库(tidyverse)
图书馆(hms)
df%
分开(d,分为=c('date','time'),sep='')%>%
变异(
时间=as_hms(时间)
) %>%
过滤器(时间>解析hms('07:30:30')和时间<解析hms('19:30:30'))
欢迎使用Stack Overflow u如果您尝试编写一个解决方案,但没有成功,那么将代码添加到您的帖子中仍然很有用。查看如何在此处生成最小可复制示例>>>stackoverflow.com/help/Minimal-repeatable-Example