簡體   English   中英

Dplyr:如何分組(全部)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM