根据 R 中的条件查找日期差异

时间:2021-04-14 13:18:26

标签: r

我想找到基于日期差异的条件。

数据框就像

Order_Id    ReceivedDate   DueDate  (Y-m-d)
---------------------------------------
 E1625          N/A        2021-05-10
 E8655       2021-01-03    2021-01-03
 E1360       2021-03-23    2021-03-15
 E2347       2021-03-20    2021-04-01
 E7807       2021-03-15    2021-04-20 
 .
 .
 .

计算日期差异:

df$received_delay <- ifelse(is.null(df$ReceivedDate) , 0, 
                       ifelse((difftime(df$ReceivedDate, df$DueDate, units = "days"))< 0, 0,
                          difftime(df$ReceivedDate, df$DueDate, units = "days")))

但得到了预期的结果。

预期结果:

Order_Id    ReceivedDate   DueDate      received_delay(days)
----------------------------------------------------------
 E1625          N/A        2021-05-10            0
 E8655       2021-01-03    2021-01-03            0
 E1360       2021-03-23    2021-03-15            8
 E2347       2021-03-20    2021-04-01            0
 E7807       2021-03-15    2021-04-20            5
 .

1 个答案:

答案 0 :(得分:2)

df$received_delay <- ifelse(is.na(df$ReceivedDate) , 0, 
                       ifelse((difftime(df$ReceivedDate, df$DueDate, units = "days"))< 0, 0,
                          difftime(df$ReceivedDate, df$DueDate, units = "days")))

应该有效 或者

df$received_delay <- ifelse(difftime(df$ReceivedDate, df$DueDate, units = "days")< 0 | is.na(difftime(df$ReceivedDate, df$DueDate, units = "days")), 0,
                                   difftime(df$ReceivedDate, df$DueDate, units = "days"))