周期日期在一个区间R
问题描述:
我试图确定一个周末是否落在日期间隔内。我已经能够确定某个特定的日期是否是一个周末,而不是在试图查看一系列日期时。这可能吗?如果是这样,请告知。 TIA。周期日期在一个区间R
library(lubridate, chron)
start.date <- c("1/1/2017", "2/1/2017")
end.date <- c("1/21/2017", "2/11/2017")
df <- data.frame(start.date, end.date)
df$start.date <- mdy(df$start.date)
df$end.date <- mdy(df$end.date)
df$interval.date <- interval(df$start.date, df$end.date)
df$weekend.exist <- ifelse(is.weekend(df$interval.date), 1, 0)
# Error in dts - floor(dts) :
# Arithmetic operators undefined for 'Interval' and 'Interval' classes:
# convert one to numeric or a matching time-span class.
答
为什么你不喜欢日期的seq
而不是创建间隔?像
df$weekend.exist <- sapply(1:nrow(df), function(i)
as.numeric(any(is.weekend(seq(df$start.date[i], df$end.date[i],by = "day")))))
# [1] 1 1
library(dplyr)
df %>%
group_by(start.date,end.date) %>%
mutate(weekend.exist = as.numeric(any(is.weekend(seq(start.date, end.date,by = "day")))))
# start.date end.date weekend.exist
# <date> <date> <dbl>
# 1 2017-01-01 2017-01-21 1
# 2 2017-02-01 2017-02-03 1
谢谢你,joel.wilson。我认为我受限于使用'mutate()'将这些全部封装到管道中,但是使用'sapply()'的解决方案运行良好。 – user2300643
只需尝试使用您的真实数据的'dplyr'解决方案@ user2300643 –
谢谢@ joel.wilson。你是一个R向导。 – user2300643