#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
Сначала нам нужно подсчитать, сколько случаев встречается в каждой комбинации цилиндра/шестерни. Затем мы можем отфильтровать по наибольшему (т. е. наиболее частому) появлению.