gpt4 book ai didi

r - 按具有重复最大值的最大组样本大小过滤数据

转载 作者:行者123 更新时间:2023-12-01 12:13:25 25 4
gpt4 key购买 nike

使用 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

如下面的汇总表所示,20072008 都有 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

最佳答案

你已经完成了一半。您需要仅按物种分组,根据您想要保留的内容进行排序,然后从每个物种中取出顶行。

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

如果您想保持联系而不是打破联系,可以将 arrange %>% slice 替换为 filter(N == max(N))

关于r - 按具有重复最大值的最大组样本大小过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com