Как бы я сгруппировал столбцы вместе, но отфильтровал определенную группу, созданную с помощью функции group_by - PullRequest
0 голосов
/ 07 мая 2018
library(nycflights13)

data <- flights 
flights %>% group_by(carrier)

В качестве примера я использую данные nycflights13, пытаюсь выяснить, как использовать функцию group_by, сгруппировать несущие и отфильтровать несущих US, чтобы они были> 1.

1 Ответ

0 голосов
/ 07 мая 2018

Может быть неправильное понимание того, как работает group_by. От? Group_by:

> ?group_by
Most data operations are done on groups defined by variables. group_by() takes 
an existing tbl and converts it into a grouped tbl where operations are 
performed "by group" [...] grouping doesn't change how the data looks [...]
It changes how it acts with the other dplyr verbs.

Из того, что я могу собрать, вы ищете количество тех же рейсов, которые> 1 для перевозчика США. Один Group_by не может быть лучшим вариантом. Group_by полезен при применении операции на уровне группы, такой как поиск среднего времени задержки:

> flights %>% group_by(carrier) %>% na.omit(.) %>%  
  summarise(mean = mean(dep_delay))
 # A tibble: 16 x 2
 carrier  mean
 <chr>   <dbl>
 1 9E      16.4 
 2 AA      8.57
 3 AS      5.83
....

Однако group_by не изменяет и не агрегирует ваши данные.

> flights
# A tibble: 336,776 x 20
year month   day dep_time sched_dep_time dep_delay
  <int> <int> <int>    <int>          <int>     <dbl>
1  2013   1    1        517            515      2.00
2  2013   1    1        533            529      4.00

flights %>% group_by(carrier)
A tibble: 336,776 x 20 ...

Обратите внимание, что агрегирование не было выполнено, и таблица содержит такое же количество наблюдений. Как и подразумевали другие в комментариях, вам может потребоваться решить, какие функции вы хотите агрегировать, и посмотреть на другие функции агрегирования, чтобы помочь. Ниже приведен пример, который использует функции «таблица» для создания таблицы частот по «dest» и «origin» для несущей «US». Обратите внимание, что group_by не использовался.

> flights %>% select(dest,carrier,origin) %>% filter(carrier == "US") %>% 
  table(.) %>% as_tibble(.) %>% filter(n > 1)

 # A tibble: 9 x 4
 dest  carrier origin     n
 <chr> <chr>   <chr>  <int>
1 CLT   US      EWR     3232
2 PHX   US      EWR     1172
...