R:在数据框的子集中查找列的最大值

Liz*_*iza 2 r max subset plyr dataframe

我有一个数据帧df的柱子IDYearValue1Value2Value3和21788928行。我需要通过Yearand对数据进行子集化ID并找到该Value1子集中的最大值,保存该行的其余信息,我需要对Yearand 的所有组合执行此操作ID(年份从 1982 年到 2013 年,ID 是从 1 到 28371)

我试图在双循环中做到这一点:

year<-seq(1982, 2013)
cnt=1
for (i in 1:32) {
  for (j in 1:28371)

    A<-df[df$Year==year[i]&df$ID==j,] 
    maxVal[cnt,]<-A[A$Value1==max(A$Value1),]
    cnt=cnt+1
}
}
Run Code Online (Sandbox Code Playgroud)

但这需要很长时间。有没有更有效的方法来做到这一点?也许使用ddplywith

Sab*_*DeM 5

一个基本的 R 解决方案aggregate

prov <- aggregate(. ~ Year + ID, data = dat, FUN = max)
Run Code Online (Sandbox Code Playgroud)