正如我在某处看到的那样,当有多个group_by()层时,一个summary()剥离了一层分组 . 在sql中,有“所有人分组” . 我想知道是否有办法取消dplyr中的所有分组(例如,我们可以获得最大值,而不是每组)
例:
library(dplyr)
library(car)
mtcars %>%
select(cyl, gear, carb) %>%
group_by(cyl, gear) %>%
summarise(count = n()) %>%
arrange(desc(count))
输出:
Source: local data frame [8 x 3]
Groups: cyl
cyl gear count
1 4 4 8
2 4 5 2
3 4 3 1
4 6 4 4
5 6 3 2
6 6 5 1
7 8 3 12
8 8 5 2
所以数据是group_by(cyl,gear):两层分组 . 总结()计算每个(汽缸,齿轮)组中的汽车数量,然后剥离group_by(齿轮)层 . 现在数据是group_by(cyl) . 正如您所看到的,下降顺序仅适用于每个气缸 . (对于cyl == 4,在第1-3行中下降,对于cyl == 6,在第4-6行中下降,......) . 我们怎样才能得到所有8条线的下降? (第7行应该是第一行 . )
另一个如何汇总()分组的例子:
mtcars %>%
select(cyl, gear, carb) %>%
group_by(cyl, gear) %>%
summarise(count = n())
Output:
Source: local data frame [8 x 3]
Groups: cyl
cyl gear count
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
---
mtcars %>%
select(cyl, gear, carb) %>%
group_by(cyl, gear) %>%
summarise(count = n()) %>%
summarise(count1 = max(count))
Output:
Source: local data frame [3 x 2]
cyl count1
1 4 8
2 6 4
3 8 12
---
mtcars %>%
select(cyl, gear, carb) %>%
group_by(cyl, gear) %>%
summarise(count = n()) %>%
summarise(count1 = max(count)) %>%
summarise(max(count1))
Output:
Source: local data frame [1 x 1]
max(count1)
1 12
1 回答
正如David在评论中提到的那样,您正在寻找
ungroup()
:你会得到:
注意:在您的示例中,您
select()
是carb
变量,但由于您在cyl, gear
组上summarise()
,因此永远不会使用它 . 我从答案中删除了它 .