按两个变量分组和正确的降序有困难。
我使用一个修改过的Iris df,这是我的脚本:
iris_new <- iris %>%
mutate(number_petals = sample(1:10, size = 150, replace = TRUE))
iris_new %>%
group_by(number_petals, Species) %>%
summarise(n=sum(Petal.Length, na.rm=TRUE)) %>%
arrange(desc(n), by_group = TRUE) %>%
head(25) %>%
ggplot(aes(x=reorder(number_petals,n),y=n,fill=factor(Species))) +
xlab("Number of Petals")+
ylab("Total sum of petal lenghts") +
geom_col() #+ coord_flip()
有两个问题:
1.自从我添加了第二个group_by参数(Species)后,它就不再按降序排序。
- Head(25)不取每个number_petals和每个species的最大25个花瓣长度之和,而是取最大的25个花瓣长度,与number_petals和species无关。
我读到summarise()删除了第二个group_by变量,但我不确定如何处理该信息。
所有的帮助是非常感谢!
1条答案
按热度按时间7vhp5slm1#
这里有一种使用
factor
艾德方法的方法-我们创建了两个新列
n
和n1
,其中n1
是每个number_petals
中n
值的sum
。arrange
按n1
对数据进行排序,并根据其出现情况创建因子水平。head(25)
将选择前25行,而不考虑分组。如果要按组选择顶部行,请查看?slice_max
或?slice
。要选择
n
(这里是5个)值,这里有一个使用连接的不同方法。