Используя набор данных iris
с добавлением столбца Year
, созданного ниже, я хочу сгруппировать по Species
и Year
, чтобы выбрать Year
с максимальным количеством наблюдений для каждого species
.
iris$Year <- c(rep(c("2007", "2008"), each = 25),
rep(c("2007", "2008"), times = c(10, 40)),
rep(c("2007", "2008"), times = c(40, 10)))
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Year
1 5.1 3.5 1.4 0.2 setosa 2007
2 4.9 3.0 1.4 0.2 setosa 2007
3 4.7 3.2 1.3 0.2 setosa 2007
4 4.6 3.1 1.5 0.2 setosa 2007
5 5.0 3.6 1.4 0.2 setosa 2007
6 5.4 3.9 1.7 0.4 setosa 2007
Как видно из сводной таблицы ниже, 2007
и 2008
имеют 25 наблюдений (строк) для setosa
. Когда есть связи в количестве наблюдений, я хочу выбрать минимум Year
.
Короче говоря, я пытаюсь выбрать только setosa 2007, versicolor 2008 и virginica 2007 из воспроизводимых данных, указанных выше, предпочтительно с использованием dplyr
РЕДАКТИРОВАТЬ Обратите внимание, что вместо создания сводной таблицы я хочу выбрать соответствующие комбинации вида и года из данных iris
, созданных выше. Другими словами, я хочу включить в подмножество iris
только setosa 2007, versicolor 2008 и virginica 2007 (т.е. минимальный год с максимальным количеством наблюдений). Извините за путаницу. Конец редактирования
library(dplyr)
iris %>%
group_by(Species, Year) %>%
summarise(N = n()) %>%
as.data.frame()
Species Year N
1 setosa 2007 25
2 setosa 2008 25
3 versicolor 2007 10
4 versicolor 2008 40
5 virginica 2007 40
6 virginica 2008 10