我正在处理从csv文件引入的日期因素(dateframe $ LastDate),并希望计算从今天起的日期。缺少值是常态,日期填充约1000行的20%。
这就是我到目前为止所给出的自1970年以来的天数因素。做一件简单的事情感觉做了很多工作,所以我确定我已经离开了某个地方。
NumberOfDays <- ifelse(!is.na(LastDate), Sys.Date()-LastDate, as.numeric(""))
答案 0 :(得分:2)
您需要确保LastDate最初是日期格式。我并不认为as.numeric在这里是必需的。
LastDate = as.Date(c("2011-01-01", "2011-02-01", NA, "2011-03-01"))
NumberOfDays = as.numeric(Sys.Date() - LastDate)
如果您希望NA为零,请使用
NumberOfDays[is.na(NumberOfDays)] = 0
答案 1 :(得分:1)
确保您的LastDate字段已格式化并在R中显示为日期。您可以使用以下代码执行此操作:
df$LastDate <- as.Date(paste(df$LastDate), "%y%m%d")
请注意,在这种情况下,LastDate字段为“yymmdd”格式,此代码可能会根据您的数据而改变。
正确格式化后,可以使用plyr创建一个新变量:
df <- ddply(df, .(eventID), transform, NumberOfDays = Sys.Date() - LastDate)
在这种情况下,您可以使用唯一标识行的eventID。如果您有多个标识符,则可以用逗号分隔它们。
希望这有帮助!