我想找到基于日期差异的条件。
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
.
答案 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"))