[英]Dplyr: how to group_by(all)
正如我在某處看到的那樣,當有多層group_by()時,一個summarise()會剝離一層分組。 在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):兩層分組。 summarise()計算每個(缸,齒輪)組中有多少輛汽車,然后剝離group_by(gear)層。 現在數據是group_by(cyl)。 如您所見,下降順序僅適用於每個圓柱體。 (對於cyl == 4,第1-3行下降,對於cyl == 6,在第4-6行下降...)。 如何獲得所有8條線的下降? (第7行應該是第一行。)
關於summarise()如何剝離分組的另一個示例:
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
嘗試:
mtcars %>%
count(cyl, gear, name = "count") %>%
arrange(desc(count))
你會得到:
#Source: local data frame [8 x 3]
#
# cyl gear count
#1 8 3 12
#2 4 4 8
#3 6 4 4
#4 4 5 2
#5 6 3 2
#6 8 5 2
#7 4 3 1
#8 6 5 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.