R 按具有重复最大值的最大组样本大小筛选数据

R 按具有重复最大值的最大组样本大小筛选数据,r,dplyr,R,Dplyr,使用iris数据集,并添加下面创建的Year列,我想按Species和Year分组,以选择Year,其中每个物种的观测次数最多 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) Sepa

使用
iris
数据集,并添加下面创建的
Year
列,我想按
Species
Year
分组,以选择
Year
,其中每个
物种的观测次数最多

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

你已经走到一半了。你只需要按物种分组,根据你想要保留的东西分类,然后从每个物种中选出最上面一行

iris %>%
  group_by(Species, Year) %>%
  summarise(N = n()) %>%
  group_by(Species) %>%
  arrange(desc(N), Year) %>%
  slice(1)
# # A tibble: 3 x 3
# # Groups:   Species [3]
#      Species  Year     N
#       <fctr> <chr> <int>
# 1     setosa  2007    25
# 2 versicolor  2008    40
# 3  virginica  2007    40
iris%>%
按(物种、年份)划分的组别%>%
总结(N=N())%>%
组别(种类)%>%
安排(说明(N),年份)%>%
切片(1)
##tibble:3 x 3
##类群:种[3]
#种年N
#         
#1 setosa 2007 25
#2彩色2008 40
#3弗吉尼亚州2007 40

如果你想保持联系而不是打破联系,你可以用
过滤器(N==max(N))
过滤器(row_number()==1)
:-)或:
虹膜%>%count(Species,Year)%%>%arrange(desc(N))%%>%distinct(Species,keep_all=TRUE)
或更易读的
虹膜%>%count(物种,年份)%%>%按(物种)%%>%切片分组(哪个最大(n))
@Frank,我更喜欢明确地说明我的平局,而不是依赖于莫名其妙的排序行为。@Gregor,我增加了清晰性以更好地描述期望的结果,这是
iris
的子集,而不是汇总表的子集。@B.Davis接受我的答案并添加
%>%inner\u join(iris)
,以获得所需的输出。
iris %>%
  group_by(Species, Year) %>%
  summarise(N = n()) %>%
  group_by(Species) %>%
  arrange(desc(N), Year) %>%
  slice(1)
# # A tibble: 3 x 3
# # Groups:   Species [3]
#      Species  Year     N
#       <fctr> <chr> <int>
# 1     setosa  2007    25
# 2 versicolor  2008    40
# 3  virginica  2007    40