首页 > 解决方案 > 当两个或更多时,逐行查找 data.frame 中的唯一最大值

问题描述

我有几个 data.frames,我必须找到给定某一列的最大值。一些 data.frames 有一个唯一的最大值,但其他的有两个或多个唯一的最大值。

如何打印具有此类 data.frames 最大值的行?

一些假数据:

#### Simple case with only one unique max value
df = data.frame(x = c(1,1,1,1,2,2,2,2,2), y = c(10, 10, 10, 10, 10, 10, 10, 9, 9))

df = data.frame(table(df$y))
df$Var1 = as.numeric(levels(df$Var1))[df$Var1]

max_val = df[which.max(df$Freq),]

print(max_val)
Var1 Freq
2   10    7

#### Unknown case with two unique max values
df_2 = data.frame(x = c(1,1,1,1,2,2,2,2,2), y = c(10, 10, 10, 9, 9, 9, 11, 11, 15))

df_2 = data.frame(table(df_2$y))
df_2$Var1 = as.numeric(levels(df_2$Var1))[df_2$Var1]

期望的输出df_2

  Var1 Freq
1    9    3
2   10    3

谢谢你的帮助

标签: rdataframefindmaxrows

解决方案


选择频率与最大值相同的位置

df_2[df_2$Freq == max(df_2$Freq),]

#  Var1 Freq
#1    9    3
#2   10    3

推荐阅读