I tried to count days between specific dates. I have 2 columns with all character vectors.
start.date <- c("2015-01-10","2015-01-11","2015-02-24")
end.date <- c("2015-03-10","2015-04-01","2015-06-13")
date10 <- data.frame(cbind(start.date,end.date))
date10$start.date <- as.character(date10$start.date)
date10$end.date <- as.character(date10$end.date)
str(date10)
and the specific dates are from 2015-04-11 to 2015-07-10.
so I made all date which is between the specific dates by using seq().
sp.da1<-ymd("2015-04-11")
sp.da2<-ymd("2015-07-10")
inteval.da<-seq(sp.da1, sp.da2, by = 'day')
I wanted to know how many days are between the specific dates.
I tried to use seq(start.date,end.date,by = 'day') like above, but I get this error: 'from' must be of length 1
Please Help me!!!
You are asking how many days of a given time interval is inside a main time interval.
Let's first set up the three varying time intervals. Then we write a function that checks for every day x
whether it is inside or outside the main interval. If we sum up the number of days inside the main interval, we'll have what you're searching for:
date10$start.date <- as.Date.character(date10$start.date, format="%Y-%m-%d")
date10$end.date <- as.Date.character(date10$end.date, format="%Y-%m-%d")
your_intervals <- Map(seq, from = date10[, 1], to = date10[, 2], by = "days")
your_intervals
is a list with three data frames, each containing every day in the interval.
is_in_interval <- function(x, l_bound = sp.da1, u_bound = sp.da2){
return (x > l_bound) & (x < u_bound)
}
sapply(your_intervals, function(x) sum(is_in_interval(x)))
# [1] 0 0 63