R:提取每个日期的最新版本时间

时间:2016-10-05 06:02:40

标签: r loops date dataframe revision

我有一个包含3列的修订数据框:

  1. revisionTime
  2. 日期
  3. 例如这里有一个样本,但我的很长(数十万行)

    df = structure(list(revisionTime = structure(c(1471417781, 1471417781, 
    1471417781, 1473978576, 1473978576, 1473978576), class = c("POSIXct", 
    "POSIXt"), tzone = ""), date = structure(c(1464652800, 1467244800, 
    1469923200, 1456704000, 1467244800, 1472601600), class = c("POSIXct", 
    "POSIXt"), tzone = ""), value = c(103.7, 104.1, 104.9, 104.414, 
    104.3, 104.4)), .Names = c("revisionTime", "date", "value"), row.names = 536:541, class = "data.frame")
    

    我需要的是一种从这个data.frame中提取每个日期的最新版本时间(以及相应的值)的快速方法。有一些类似的问题,但我的问题更精确:有没有办法避免循环

    谢谢

2 个答案:

答案 0 :(得分:0)

我们可以使用data.table。将'data.frame'转换为'data.table'(setDT(df1)),在转换为Date类后按'date'分组,order按降序排列'revisionTime'(in i)并获取head的第一行。

library(data.table)
setDT(df1)[order(-revisionTime), head(.SD, 1), .(date = as.Date(date))]

答案 1 :(得分:0)

如果你的revisionTime格式很好(Y-m-d H:M:S),就像在你的例子中一样,你可能根本不需要转换为Date时间,这应该只是起作用:

aggregate(revisionTime ~ date, df, max)