在数据帧上应用 which.max 的更好方法

时间:2021-01-31 14:09:32

标签: r data-science

所以我试图在使用来自 https://www.kaggle.com/abcsds/pokemon

的数据集的同时学习 R
data = read.csv("Pokemon.csv")
data$Name = sub(".*(Mega)", "Mega", data$Name) # replacing name duplications

并且我想找到在任何列(总计、攻击、HP 等)上具有最大值的所有口袋妖怪:

我知道我可以这样做:sapply(data[5:11], max, na.rm = TRUE) 找出最大值和类似的东西

data[which.max(data$Total),]
data[which.max(data$HP),]
data[which.max(data$Attack),]

查找所有具有最大值的行。

有没有一种方法可以使用 sapply 之类的东西来获取所有行而无需按顺序遍历它们?

1 个答案:

答案 0 :(得分:0)

我相信这就是你想要的

我为此使用 tidyverse,因为数据是宽格式的,并且有不同的 stat 列,我首先使用 pivot_longer 将其转换为长格式,然后我使用 group_by stats 列和 { {1}} 每组达到预期结果的最大值。

filter