【问题标题】:Finding Days Since Date in R from csv file从csv文件中查找自日期以来的天数
【发布时间】:2011-07-12 19:01:18
【问题描述】:

我正在处理从 csv 文件中引入的日期因子 (dateframe$LastDate),并希望计算从今天开始的天数。缺失值是常态,日期占 1000 行的 20%。

这是我迄今为止所拥有的,这让我回到了自 1970 年以来的日子。感觉做一件简单的事情需要做很多工作,所以我确定我在某个地方。

NumberOfDays <- ifelse(!is.na(LastDate), Sys.Date()-LastDate, as.numeric(""))

【问题讨论】:

    标签: datetime r date csv statistics


    【解决方案1】:

    您需要确保 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
    

    【讨论】:

    • 既然你定义了一个向量,那么它在一个因子上的工作原理是一样的吗?还是我需要先将其转换为矢量?我意识到日期问题,但无法将因素直接转换为日期。
    • @Rob:看来您可以自己尝试一下。但如果您目前无法访问 R:是的,它也适用于因子。作为测试,您可以将上面的日期向量包装在 as.factor() 中。结果和原来的例子一样。
    • 谢谢文森特。我确实尝试过,但无法让它与我的数据一起使用。我确定这是我正在做的事情。感谢您的回复。
    【解决方案2】:

    确保您的 LastDate 字段已格式化并在 R 中读取为日期。您可以使用以下代码来执行此操作:

    df$LastDate &lt;- as.Date(paste(df$LastDate), "%y%m%d")

    请注意,在这种情况下,LastDate 字段是“yymmdd”格式,此代码可能会根据您的数据而改变。

    正确格式化后,您可以使用 plyr 创建一个新变量:

    df &lt;- ddply(df, .(eventID), transform, NumberOfDays = Sys.Date() - LastDate)

    在这种情况下,您可以使用唯一标识行的 eventID。如果您有多个标识符,您可以用逗号分隔它们。

    希望这会有所帮助!

    【讨论】:

    • 这很棒。非常感谢 plyr 的指导。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2018-01-11
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多