У меня есть фрейм данных, как показано ниже, мне нужно найти количество дней в пределах области (которая простирается между начальным dt и конечным dt). Logi c соответствует формуле apply_days ниже.
cust start-dt end-dt item item_type year applicable_days
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2019 MIN("2019-12-31", end-dt) - MAX(start-dt,"2019-01-01")
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2020 MIN("2020-12-31", end-dt) - MAX(start-dt,"2020-01-01")
Я пробовал несколько способов сделать это. Это не работает. Можете ли вы мне помочь, где я делаю ошибку?
Испытание 1:
df <- df %>%
mutate(
applicable-days = (min( as.Date(paste0(year,"-12-31")), end-dt) - max(start-dt, as.Date(paste0(year,"-01-01"))) )
)
Результат -> дает то же значение, что и первая запись.
Испытание 2:
df[,"applicable-days"] <- as.numeric(min( as.Date(paste0(df[,"year"],"-12-31")) , df[,"end-dt"] ) -
max( df[,"start-dt"] , as.Date(paste0(df[,"year"],"-01-01"))) )
Результат -> возвращает только NA
Испытание 3:
df[,"applicable-days"] <- apply(df, 1, function(x){
as.numeric(min( as.Date(paste0(x["year"],"-12-31")) , x["end-dt"] ) -
max( x["start-dt"] , as.Date(paste0(x["year"],"-01-01"))) )
})
Результат -> возвращает только NA
Когда я пробую использовать только одно значение, он отлично работает в последних двух испытаниях.
Пожалуйста, помогите мне найти здесь ошибку.
Заранее спасибо