Я пытаюсь создать матрицу того, попадает ли дата в диапазон, созданный двумя моими столбцами, Data $ StartDate и Data $ EndDate. С этой целью я создал функцию ниже
DatesChecked <- as.character(seq(as.Date("2012-06-30"), as.Date("2017-12-09"), by = "day"))
CheckOpen <- function(x, row, column){
if (Data$StartDate[row] > as.Date(column)) {
return(0)
} else {
if (is.na(Data$EndDate[row])) {
return(1)
} else {
ifelse(Data$EndDate > as.Date(column), return(1), return(0))
}
}
}
Data[,DatesChecked] <- mapply(CheckOpen, Data[,DatesChecked])
Однако я не уверен, как передать индекс строки в качестве аргумента моей функции. Я добавил «ряд» в качестве наполнителя.
В конечном счете, однако, я сильно подозреваю, что выбрал совершенно неправильный подход. Что я собираюсь сделать дальше, так это взять сумму каждого столбца и поместить их обратно в качестве нового столбца в «DatesChecked», и это кажется слишком сложным методом (т.е. я подсчитываю, сколько строк каждая дата попадает в диапазон из).
Пример данных:
StartDate EndDate
<dttm> <dttm>
1 2012-10-16 2014-02-19
2 2012-10-17 2013-04-16
3 2012-11-05 2013-04-22
4 2012-11-14 2013-05-01
5 2013-03-20 2013-08-29
6 2013-04-07 2013-09-09
В столбце с заголовком «2014-01-01» результаты будут c(1,0,0,0,0,0)
, так как первая строка — единственная, где она попадает в диапазон.