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

标签 r dataframe max subset plyr

我有一个数据框df,包含列IDYearValue1Value2Value3 和 21788928 行。我需要按 YearID 对数据进行子集化,并在该子集中找到最大的 Value1 保存该行的其余信息,我需要对 YearID 的所有组合执行此操作(年份从 1982 年到 2013 年, ID 从 1 到 28371)

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

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
}
}

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

最佳答案

带有 aggregate 的基础 R 解决方案:

prov <- aggregate(. ~ Year + ID, data = dat, FUN = max)

关于R:在数据框的子集中查找列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763396/

相关文章:

python - 将复合值转换为 pandas 数据框中的列

search - Datomic - 选择某些属性最高的实体

r - 在ggplot2中绘制线条

R:如何使用plot.ts逐月绘图(时间序列)

python - 两个数据帧上列函数的高效 pandas 操作

java - 如何在小于元素的元素左侧找到最大元素?

java - 使用单个低位数字时,最小值和最大值不能正常工作

r - DiagrammeR fontsize 参数什么也不做

r - S3 通用,用于 Tibbles、Data.Frames、矩阵等列表

python - 如何从 nltk 中的 freqDist 获取元组列表