如果R中的字段为NA,则将difftime计算为系统日期

如果R中的字段为NA,则将difftime计算为系统日期,r,R,非常简单,我想计算任期,如果员工被任命,那么我希望新字段返回任期。日期-用于计算任期的Job.Entry.Date。否则,如果员工处于活动状态,则我希望新字段返回Sys.Date-Job.Entry.Date 使用以下代码: jobentrydat_alltechs$Tenure <-if (jobentrydat_alltechs$Term.Date == is.na) { return (difftime(Sys.Date(), jobentrydat_alltechs$Job.E

非常简单,我想计算任期,如果员工被任命,那么我希望新字段返回任期。日期-用于计算任期的Job.Entry.Date。否则,如果员工处于活动状态,则我希望新字段返回Sys.Date-Job.Entry.Date

使用以下代码:

jobentrydat_alltechs$Tenure <-if (jobentrydat_alltechs$Term.Date == is.na) {
  return (difftime(Sys.Date(), jobentrydat_alltechs$Job.Entry.Date, units = c("days")))
} else if (jobentrydat_alltechs$Term.Date != is.na) {
    return (difftime(jobentrydat_alltechs$Term.Date, jobentrydat_alltechs$Job.Entry.Date, units = c("days")))
}
我得到以下错误

==.defaultjobentrydat_alltechs$Term.Date中的错误,is.na: 比较1仅适用于原子类型和列表类型

您需要ifelse而不是if,因为它是矢量化的,而且is.na是一个函数,不是一个要比较的值

jobentrydat_alltechs$Tenure <- ifelse(is.na(jobentrydat_alltechs$Term.Date),
  difftime(Sys.Date(), jobentrydat_alltechs$Job.Entry.Date, units = c("days")),
  difftime(jobentrydat_alltechs$Term.Date, jobentrydat_alltechs$Job.Entry.Date, units = c("days")))

请提供一个我尝试使用ifelse和is.najobentrydat_alltechs$Term.Date时遇到的错误。我发现我真正的错误是从if开始,然后是ifelse,而不是ifelse。谢谢