首页 > 解决方案 > 根据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
 .

标签: r

解决方案


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"))

推荐阅读