Сгруппированные данные в 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