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