r-日期的ifelse()或dplyr::if_else()出现问题



我想在向量mydates中转换实际日期(Sys.Date()(中的NA,如果值是日期,则不做任何更改,但我无法成功使用dplyr包的ifelseif_else。在我的例子中:

# Package
library(dplyr)
# My vector
mydates<-c(NA,NA,NA,"2019-03-14","2020-05-01",NA,NA)
# Using ifelse
mydatescorr1<-ifelse(is.na(mydates)==TRUE,Sys.Date(),mydates)
mydatescorr1
[1] "18771"      "18771"      "18771"      "2019-03-14" "2020-05-01" "18771"      "18771" 
#Using if_else
mydatescorr2<-if_else(is.na(mydates)==TRUE,Sys.Date(),mydates)
mydatescorr2 
Erro: `false` must be a `Date` object, not a character vector.

求你了,有人帮我修吗?

mydates是一个字符向量(class(mydates)(,因此当您从其他部分按原样返回mydates时,您返回的是字符对象,而不是日期。你可以使用-

dplyr::if_else(is.na(mydates), Sys.Date(), as.Date(mydates))

或不带if_else-

mydates <- as.Date(mydates)
mydates[is.na(mydates)] <- Sys.Date()

怎么样

tidyr::replace_na(as.Date(mydates), Sys.Date())

(您仍然需要先将mydates转换为Date类型。(如果您愿意,可以通过管道传输:

mydates %>% as.Date() %>% replace_na(Sys.Date())

相关内容

  • 没有找到相关文章

最新更新