聚合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表现得这样? (以及在返回的数据框中保留日期类列的最佳方法是什么?)
感谢您的帮助,
答案 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日。
希望这会有所帮助。