R 找到每个日期的最大速度的有效方法
我有一个由多个数据帧组成的大列表,如下所示R 找到每个日期的最大速度的有效方法,r,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/
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]
我们可以使用
map
循环查看列表
,按“日期”分组,使用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])
在
baser
中,我们使用lappy
循环并使用aggregate
,但这会很慢
lapply(ls.Dataframe, function(x) aggregate(Velocity ~ Date, x, FUN = max))
aggregate
是否比dplyr::groupby
/summary
慢很多?我本来希望它的性能大致相同。@r2evansaggregate
比我过去做的一些基准测试要慢。Donno,如果在新版本中速度非常快,我在尝试下面提出的解决方案时会遇到以下错误:没有适用于“group_by_”的方法应用于类“Date”@ChristopherMontalvo的对象,我无法重现这种行为。据我所知,Date类与dplyr
很好地结合在一起。出于某种原因,Date被输入为类字符,而不是类日期。谢谢,它工作得很好。