找到每个日期的最大速度的有效方法

时间:2019-06-10 15:28:01

标签: r

我有一个很大的列表,由多个数据帧组成,如下所示。

    ls.DataFrame[[1]]
    Date            Velocity
    10/1/1990           5.5
    10/1/1990           5.5
    10/1/1990           5.5
    10/1/1990           5.2
    10/1/1990           5.2
    10/1/1990           5.2
    10/2/1990           5.2
    10/2/1990           5.2
    10/2/1990           5.2
    10/2/1990           5.2
    10/2/1990           5
    10/2/1990           5.2
    10/2/1990           5.2
    10/3/1990           4.2
    10/3/1990           4.2
    10/3/1990           4.2
    10/3/1990           4.4
    10/3/1990           4.2
    10/3/1990           3.7
    10/3/1990           3.7

我想要的输出是保留日期和该特定日期的最大速度。这就是我希望输出看起来像

    Date            Velocity
    10/1/1990           5.5
    10/2/1990           5.2
    10/3/1990           4.4     

我尝试这样做,但是无法正常工作

    max(ls.Dataframe[[1]]Velocity[ls.dataframe[[1]]$Date]

1 个答案:

答案 0 :(得分:2)

我们可以将listmap循环,按“日期”分组,并使用max来获得“速度”的tidyverse

library(tidyverse)
map(ls.Dataframe, ~ .x %>%
                      group_by(Date) %>%
                      summarise(Velocity = max(Velocity))

或与data.table一起使用,以更高效地进行操作

library(data.table)
lapply(ls.Dataframe, function(x) 
     as.data.table(x)[, .(Velocity = max(Velocity)), by = Date])

base R中,我们与lapply循环并使用aggregate,但这会很慢

lapply(ls.Dataframe, function(x) aggregate(Velocity ~ Date, x, FUN = max))