且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

用另一个日期替换日期中的NA

更新时间:2023-01-07 14:49:11

假定您已经像这样输入数据(请注意,NA不在引号中,因此它们被视为NA而不是"NA")...

Assuming that you have entered your data like this (note that NAs are not enclosed in quotes so they are read as NAs and not "NA")...

DB1 <- data.frame(orderItemID  = 1:10,     
  orderDate = c("2013-01-21","2013-03-31","2013-04-12","2013-06-01","2014-01-01", "2014-02-19","2014-02-27","2014-10-02","2014-10-31","2014-11-21"),  
  deliveryDate = c("2013-01-23", "2013-03-01", NA, "2013-06-04", "2014-01-03", NA, "2014-02-28", "2014-10-04", "2014-11-01", "2014-11-23"),
  stringsAsFactors = FALSE)

...并且按照Nicola的回答,这样做是为了正确设置格式...

...and, per Nicola's answer, done this to get the formatting right...

DB1[,2:3]<-lapply(DB1[,2:3],as.Date)

...这也有效:

library(lubridate)
DB1$deliveryDate <- with(DB1, as.Date(ifelse(is.na(deliveryDate), orderDate + days(2), deliveryDate), origin = "1970-01-01"))

或者您可以使用dplyr对其进行管道传输:

Or you could use dplyr and pipe it:

library(lubridate)
library(dplyr)
DB2 <- DB1 %>%
  mutate(deliveryDate = ifelse(is.na(deliveryDate), orderDate + days(2), deliveryDate)) %>%
  mutate(deliveryDate = as.Date(.[,"deliveryDate"], origin = "1970-01-01"))