2017-02-16 5 views
0

Рассмотрим пример данныхданные добыча: Подмножество на основе максимальных критериев нескольких наблюдений

Zip_Code <- c(1,1,1,2,2,2,3,3,3,3,4,4) 
Political_pref <- c('A','A','B','A','B','B','A','A','B','B','A','A') 
income <- c(60,120,100,90,80,60,100,90,200,200,90,110) 
df1 <- data.frame(Zip_Code, Political_pref, income) 

Я хочу group_by каждый $Zip_code и получить максимальную $income на основе каждого $Political_pref фактора.

Желаемый результат - это df, который имеет 8obs из 3 переменных. Это содержит 2 набл для каждого $Zip_code (в А и В для каждого), которые имели наибольший доход

Я играю с dplyr, но рад за решение с использованием любого пакета (возможно, с data.table)

library(dplyr) 
df2 <- df1 %>% 
    group_by(Zip_Code) %>% 
    filter(....) 
+0

Вы можете сгруппировать по zip_code и политической прив и суммировать его с максимальной функцией? 'df%>% group_by (zip_code, polit_pref)%>% summary (m = max (доход))' –

+1

'aggregate (доход ~ Zip_Code + Political_pref, df1, max)'? – Cath

+0

также полезно: http://stackoverflow.com/questions/29657753/can-summarise-in-dplyr-not-drop-other-columns-in-my-data-frame – Cath

ответ

1

Мы можем использовать slice с which.max

library(dplyr) 
df1 %>% 
    group_by(Zip_Code, Political_pref) %>% 
    slice(which.max(income)) 
Смежные вопросы