【问题标题】:R - Aggregate DatesR - 汇总日期
【发布时间】:2013-06-10 22:02:44
【问题描述】:

当聚合一个 R 数据帧时,日期转换为整数:

例如,如果我想为以下数据框中的每个 Id 取最大日期:

> df1 <- data.frame(id = rep(c(1, 2), 2), b = as.Date(paste("01/01/", 2000:2003, sep=''), format = "%d/%m/%Y"))
> df1
  id          b
1  1 2000-01-01
2  2 2001-01-01
3  1 2002-01-01
4  2 2003-01-01
> aggregate(x = list(b = df1$b), by = list(id = df1$id), FUN = "max")
  id     b
1  1 11688
2  2 12053

为什么 R 会这样? (以及在返回的数据框中保留日期类列的最佳方法是什么?)

感谢您的帮助,

【问题讨论】:

  • 为我工作... R 3.0.1。
  • 你得到一个日期向量?我的 R 版本 2.11 ;是否有一个环境变量可以改变 R 的行为?

标签: r date aggregate


【解决方案1】:

这适用于我的 R 版本 3,也许更新有一些变化,所以我建议你更新 R :) 至于这个版本的R,有没有试过聚合后的as.Date()函数? 在你的例子中,应该是这样的:

    dtf2<-aggregate(x = list(b = df1$b), by = list(id = df1$id), FUN = "max")
    dtf2$b<-as.Date(dtf$b)

你也可以在as.Date中添加'origin'选项,比如

    as.Date(dtf$b, origin='1970-01-01') 

UPD:当 R 将日期视为整数时,它的起源是 1970 年 1 月 1 日。

希望这会有所帮助。

【讨论】:

  • 感谢您的回答(我确认 R 2.11 和 3 下的结果不同...)。什么保证原始日期保持在 1/1/1970 ?我在文档中找不到这一点(并且由于文档中的函数似乎是用这种语言随机修改的,我不是很有信心......)
  • 好吧,如果您在文档中没有找到,我不知道如何向您保证。就像statmethods.net/input/dates.html 也说明了原始日期,如果您进一步在 r 中搜索日期来源,您肯定会有更多链接说明:) 毕竟它有效,对吗?那么你还需要什么保证呢? :)
  • 文档中的解释:stat.ethz.ch/R-manual/R-patched/library/base/html/Dates.html“日期表示为自 1970-01-01 以来的天数,较早的日期为负值。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 2019-12-13
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多