Как посчитать «количество значений конкретной переменной в тибле» в интервале в R? - PullRequest
0 голосов
/ 29 июня 2018

требуется пакет

'dplyr'

'nycflights13'

Я использую тиббл

 q4<-flights%>%group_by(year,month,day)%>%summarise(cancelled=sum(is.na(dep_time)),avg_delay=mean(arr_delay,na.rm = T),totalflights=n())

 q4<-q4%>%mutate(prop=cancelled/totalflights)

с использованием

q4%>%ungroup()%>%count(prop)

дает мне

     # A tibble: 342 x 2
       prop     n
       <dbl> <int>
    1 0           7
    2 0.00101     1
    3 0.00102     2
    4 0.00102     1
    5 0.00102     1
    6 0.00102     1
    7 0.00103     1
    8 0.00103     1
    9 0.00104     1
    10 0.00104     1
    # ... with 332 more rows

Есть ли способ, которым я могу (без использования грубой силы логики, как для циклов и т. Д.) получить вывод в нужной форме, я ищу решение в одну или две строки. Есть ли в dplyr функция, которая это делает ??

Желаемый вывод:

     # A tibble: X x Y
       prop     n
       <dbl> <int>
    1 0-0.1       45          #random numbers
    2 0.1-0.2     54
    3 0.2-0.3     23

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Вы можете использовать после q4<-q4%>%mutate(prop=cancelled/totalflights):

q4 %>% ungroup() %>%
mutate(category = cut(prop, breaks = c(-Inf,0.1,0.2,Inf), labels = c("0-0.1","0.1-0.2", "0.2 - 0.3") %>%
count(category)

Я верю, что это будет работать

0 голосов
/ 30 июня 2018

Я сам разобрался, что я тоже считаю лучшим.

           q4%>%ungroup()%>%count(cut_width(prop,0.025))

Выход:

                   # A tibble: 11 x 2
                  `cut_width(prop, 0.025)`     n
                    <fct>                    <int>
                 1 [-0.0125,0.0125]           233
                 2 (0.0125,0.0375]             66
                 3 (0.0375,0.0625]             26
                 4 (0.0625,0.0875]             13
                 5 (0.0875,0.112]              14
                 6 (0.112,0.138]                4
0 голосов
/ 29 июня 2018

Ниже я использую cut для группировки данных, а затем table для подсчета экземпляров каждой корзины.

data.frame(cut(q4$prop, breaks = c(0, 0.1, 0.2, 0.3)) %>% table)

производит

#           . Freq
# 1   (0,0.1]  341
# 2 (0.1,0.2]   13
# 3 (0.2,0.3]    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...