Получите самую частую запись

#r #dataframe #dplyr

Вопрос:

Как мне получить наиболее частую запись в R?

Например, если бы у меня были данные в двух столбцах:

 Name-City  A-New York  A-New York  A-Montreal  A-New York  B-Chicago  B-Chicago  B-New York  B-Detroit  

Я хотел бы получить фрейм данных с:

 Name-City  A-New York  B-Chicago  

Таким образом, в нем должна быть каждая уникальная запись в «Имени» с наиболее частой записью в «Городе».

Моя идея была бы чем-то вроде:

 df %gt;%  group_by(Name) %gt;%  count(City)  

Ответ №1:

 library(dplyr)  df %gt;%  group_by(Name) %gt;%   count(City) %gt;%  top_n(1)  # Selecting by n # # A tibble: 2 x 3 # # Groups: Name [2] # Name City n # lt;chrgt; lt;chrgt; lt;intgt; # 1 A New York 3 # 2 B Chicago 2   

Ответ №2:

Используя mtcars , допустим, мы хотим найти наиболее частое количество передач для каждого числа цилиндров:

 library(tidyverse)  mtcars %gt;% group_by(cyl, gear) %gt;%   summarize(count = n()) %gt;%   filter(count == max(count))  # A tibble: 3 x 3 # Groups: cyl [3]  cyl gear count  lt;dblgt; lt;dblgt; lt;intgt; 1 4 4 8 2 6 4 4 3 8 3 12  

Сначала нам нужно подсчитать, сколько случаев встречается в каждой комбинации цилиндра/шестерни. Затем мы можем отфильтровать по наибольшему (т. е. наиболее частому) появлению.