如何在rstudio中仅使用datetime的时间部分

如何在rstudio中仅使用datetime的时间部分,r,datetime,R,Datetime,我想将ifelse函数仅添加到rstudio中的datetime变量中的time变量,而不分离datetime 已尝试过ifelse函数只调用时间 编辑:我希望时间介于8:01-20:00=白天和20:01-8:00=夜晚之间,并且将两者重叠的任何内容混合 #Current database id<-c("m1","m1","m1","m2","m2","m2","m3","m4","m4") x<-c("2020-01-03 10:00:00","2020-01-03 16:00:

我想将
ifelse
函数仅添加到rstudio中的datetime变量中的time变量,而不分离datetime

已尝试过
ifelse
函数只调用时间

编辑:我希望时间介于8:01-20:00=白天和20:01-8:00=夜晚之间,并且将两者重叠的任何内容混合

#Current database
id<-c("m1","m1","m1","m2","m2","m2","m3","m4","m4")
x<-c("2020-01-03 10:00:00","2020-01-03 16:00:00","2020-01-03 19:20:00","2020-01-05 10:00:00","2020-01-05 15:20:00","2020-01-05 20:50:00","2020-01-06 06:30:00","2020-01-08 06:30:00","2020-01-08 07:50:00")
start<-strptime(x,"%Y-%m-%d %H:%M:%S")
y<-c("2020-01-03 16:00:00","2020-01-03 19:20:00","2020-01-03 20:50:00","2020-01-05 15:20:00","2020-01-05 20:50:00","2020-01-05 22:00:00","2020-01-06 07:40:00","2020-01-08 07:50:00","2020-01-08 08:55:00")
end<-strptime(y,"%Y-%m-%d %H:%M:%S")
mydata<-data.frame(id,start,end)

#output
day.night<-c("day","day","mixed","day","mixed","night","night","night","mixed")
newdata<-cbind(mydata,day.night)
#当前数据库

id这里有一个解决方案,它使用
dplyr::case\u当
与使用
lubridate
函数的自定义函数时。希望这有帮助

library(dplyr)

# Creating the function to filter with
hour_min <- function(x) lubridate::hour(x) + lubridate::minute(x)/60

mydata %>%
  mutate(day.night = case_when(hour_min(start) > 8 & hour_min(start) <= 20 & hour_min(end) > 8 & hour_min(end) <= 20 ~ "day",
                               (hour_min(start) <= 8 | hour_min(start) > 20) & (hour_min(end) <= 8 | hour_min(end) > 20) ~ "night",
                               TRUE ~ "mixed"))

  id               start                 end day.night
1 m1 2020-01-03 10:00:00 2020-01-03 16:00:00       day
2 m1 2020-01-03 16:00:00 2020-01-03 19:20:00       day
3 m1 2020-01-03 19:20:00 2020-01-03 20:50:00     mixed
4 m2 2020-01-05 10:00:00 2020-01-05 15:20:00       day
5 m2 2020-01-05 15:20:00 2020-01-05 20:50:00     mixed
6 m2 2020-01-05 20:50:00 2020-01-05 22:00:00     night
7 m3 2020-01-06 06:30:00 2020-01-06 07:40:00     night
8 m4 2020-01-08 06:30:00 2020-01-08 07:50:00     night
9 m4 2020-01-08 07:50:00 2020-01-08 08:55:00     mixed
库(dplyr)
#创建用于筛选的函数
小时/分钟%

mutate(day.night=case_when(hour_min(start)>8&hour_min(start)8&hour_min(end)检查包含同名函数的软件包
hms
。对于
day
mixed
night
,您的标准是什么?我现在已经添加了这些信息@andrelevant: