R - 聚合日期

时间:2013-06-14 09:31:14

标签: r date aggregate

聚合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表现得这样? (以及在返回的数据框中保留日期类列的最佳方法是什么?)

感谢您的帮助,

1 个答案:

答案 0 :(得分: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)

您还可以将“origin”选项添加到as.Date,例如

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

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

希望这会有所帮助。