Установка условия для max в функции мутации dplyr - PullRequest
0 голосов
/ 28 января 2019

Я хочу определить максимальный балл в наборе данных, но только когда количество групп населения превышает определенный порог, в данном случае выше 20. выборочные данные:

Race = c("African American", "Asian", "Hispanic", "White")
Population = c(28, 11, 31, 64)
Average_Score = c(65, 82, 49, 75)
df = data.frame(Race, Population, Average_Score)

    Race            Population Average_Score
1 African American      28           65
2 Asian                 11           82
3 Hispanic              31           49
4 White                 64           75

Что бы я хотелсделать что-то вроде:

df %>% mutate(reference=max(Average_Score)) where Population > 20

однако мне нужно добавить условие, чтобы оно вытягивало только максимум (Average_Score), где Population больше 20. В этом случае вместо возврата Average_Score из 82(потому что население Азии меньше 20), он вернул бы Average_Score из 75 (потому что самый высокий Average_Score из любой группы с населением более 20 - это Average_Score, который совпадает с белым)

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я использовал предложение Акруна:

max(Average_Score[Population > 20])

, но nycrefugee's также сработало:

df %>% 
  filter(Population > 20) %>%
  filter(Average_Score == max(Average_Score))
0 голосов
/ 29 января 2019

dplyr решение, которое может предложить большую гибкость.

df %>% 
  filter(Population > 20) %>%
  filter(Average_Score == max(Average_Score))

   Race Population Average_Score
1 White         64            75
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...