мои извинения, если это дубликат. это похоже на вопрос, что SO давно бы ответил, но я довольно много искал и не мог найти ничего, что конкретно отвечало бы на это. есть много связанных вопросов, которые могут быть использованы для ответа на этот вопрос, но я решил, что на него следует ответить формально.
это ответ на этот вопрос задан в списке рассылки r-help.
вот много примеров, как это сделать, используя sql
, поэтому я представляю себе, что легко преобразовать эти знания с использованием пакета R sqldf
. но есть несколько способов сделать это с помощью R, и я хотел проверить, есть ли у других идеи.
Основной вопрос: используя пример mtcars
data.frame, как кто-то найдет верхнюю или нижнюю (максимальную или минимальную) N записей в указанной категории? результаты сверху или снизу N для каждой группы.
если вы откроете R и введите mtcars
, вы получите таблицу с 32 записями. при группировке по столбцу цилиндра cyl
- вот три верхние записи для каждого отдельного значения cyl
. обратите внимание, что в этом случае связи исключены, но было бы неплохо показать несколько способов лечения связей.
mpg cyl disp hp drat wt qsec vs am gear carb ranks
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 2.0
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 1.0
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 2.0
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 3.0
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 1.0
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 1.5
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 1.5
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 3.0