Сгруппированные данные в dplyr

В "Основах линейных и обобщенных линейных моделей" Алана Агрести автор указывает, что существует разница между сгруппированными и разгруппированными данными для моделирования двоичной даты. Формат не имеет значения для вывода, но он имеет значение для соответствия. Я испытываю трудности с получением сгруппированных данных из несгруппированных данных эффективным способом в dplyr.

#ungrouped data
x = c(rep(0,4),rep(1,4),rep(2,4))
y = c(c(1,0,0,0,1,1,0,0,1,1,1,1))
data = as_tibble(list(x=x,y=y))
> data
# A tibble: 12 × 2
       x     y
   <dbl> <dbl>
1      0     1
2      0     0
3      0     0
4      0     0
5      1     1
6      1     1
7      1     0
8      1     0
9      2     1
10     2     1
11     2     1
12     2     1

Теперь для получения сгруппированных данных форма должна выглядеть следующим образом

x    ntrials   nsuccesses
0      4           1
1      4           2
2      4           4

Я пробовал следующее

data %>% 
group_by(x,y) %>% 
  tally()
      x     y     n
  <dbl> <dbl> <int>
1     0     0     3
2     0     1     1
3     1     0     2
4     1     1     2
5     2     1     4

Проблема в том, что y разделяется на успехи и неудачи.

1 ответ

Решение

Вы можете просто сгруппировать по столбцу x, а затем суммировать на основе столбца y:

data %>% group_by(x) %>% summarise(ntrials = n(), nsuccesses = sum(y))
# the number of successes is the sum of y if y is binary

# A tibble: 3 x 3
#      x ntrials nsuccesses
#  <dbl>   <int>      <dbl>
#1     0       4          1
#2     1       4          2
#3     2       4          4
Другие вопросы по тегам