Ввод значения столбца в переменную в зависимости от максимального значения для другого столбца

#r #tidyverse

#r #tidyverse

Вопрос:

Данные

 structure(list(fold = 1:10, .metric = c("roc_auc", "roc_auc", 
"roc_auc", "roc_auc", "roc_auc", "roc_auc", "roc_auc", "roc_auc", 
"roc_auc", "roc_auc"), .estimator = c("binary", "binary", "binary", 
"binary", "binary", "binary", "binary", "binary", "binary", "binary"
), .estimate = c(0.747, 0.874, 0.764, 0.723, 0.73, 0.703, 0.789, 
0.812, 0.81, 0.799)), class = "data.frame", row.names = c(NA, 
-10L))
  
 fold .metric  .estimator .estimate
1    roc_auc  binary     .747
2    roc_auc  binary     .874
3    roc_auc  binary     .764
4    roc_auc  binary     .723
5    roc_auc  binary     .730
6    roc_auc  binary     .703
7    roc_auc  binary     .789
8    roc_auc  binary     .812
9    roc_auc  binary     .810
10   roc_auc  binary     .799
  

У меня есть этот фрейм данных, я хочу поместить сгиб в переменную, где оценка является наибольшей? Как именно я могу это сделать?

Итак, для этого примера я хотел бы поместить 2 в переменную.

Ответ №1:

Вы можете получить значение переменной, fold для всех случаев, для которых estimate оно наибольшее. Но это вернет несколько значений, если у вас есть несколько строк, достигающих одного и того же максимального значения.

 df$fold[df$estimate==max(df$estimate)]
  

Если вам нужно только одно значение, даже если есть две максимальные оценки, вы можете использовать:

 df$fold[df$estimate==max(df$estimate)][1]
  

Ответ №2:

также может работать

 df.1 <- iris %>%
  group_by(Species) %>%
  summarise(
    n = n(),
    my.max = max(Sepal.Length, na.rm = TRUE))