很简单,我想计算任期,如果雇员被称为,那么我希望新字段返回Term。日期 - 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")))
}
我收到以下错误
==.default
中的错误(jobentrydat_alltechs $ Term.Date,is.na):
比较(1)仅适用于原子和列表类型
答案 0 :(得分: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")))