Интервал подсчета с использованием функции cut - PullRequest
0 голосов
/ 03 марта 2020

Я хочу посчитать числа в зависимости от заданных интервалов. например:

Vect<-c(2,5,9,11)
interval<-cut(Vect,c(0,3,5,7,12))
interval<-as.data.frame(interval)
count_interval<-interval%>%group_by(interval)%>%summarise(n=n())

count_interval показывает мне:

  interval     n
  <fct>    <int>
1 (0,3]        1
2 (3,5]        1
3 (7,12]       2

, но я хочу, чтобы мой код обнаружил, что пропущен интервал, и автоматически добавил строку, например, следующий кадр данных:

  interval     n
  <fct>    <int>
1 (0,3]        1
2 (3,5]        1
3 (5,7]        0
4 (7,12]       2

Как я могу получить это? Спасибо за помощь.

Ответы [ 2 ]

3 голосов
/ 03 марта 2020

Вы можете использовать от table до для подсчета числа в каждой группе .

table(interval)
#interval
# (0,3]  (3,5]  (5,7] (7,12] 
#     1      1      0      2 

, и в случае, если вам нужно, как data.frame, приведите его, используя as.data.frame.

as.data.frame(table(interval))
#  interval Freq
#1    (0,3]    1
#2    (3,5]    1
#3    (5,7]    0
#4   (7,12]    2

Если вы хотите максимум на группу , вы можете использовать aggregate:

data<-data.frame(x1=Vect,x2=cut(Vect,c(0,3,5,7,12)))
aggregate(x1~., data, max, drop = FALSE)
#      x2 x1
#1  (0,3]  2
#2  (3,5]  5
#3  (5,7] NA
#4 (7,12] 11
1 голос
/ 03 марта 2020

Вы можете использовать .drop = FALSE для включения уровней факторов, которые являются пустыми.

library(dplyr)
interval%>% group_by(interval, .drop = FALSE) %>% summarise(n=n())

# A tibble: 4 x 2
#  interval     n
#  <fct>    <int>
#1 (0,3]        1
#2 (3,5]        1
#3 (5,7]        0
#4 (7,12]       2

Кроме того, вы также можете использовать count

interval%>% count(interval, .drop = FALSE)

Обратите внимание, что некоторые из этих функций также присутствуют в библиотеке plyr, так что если у вас есть эта библиотека, загруженная эти функции могут их маскировать. В таком случае перезапустите R и загрузите только библиотеку dplyr или явно упомяните dplyr::summarise и dplyr::count.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...