dplyr 中的分组数据

Grouped data in dplyr

在 Alan Agresti 的线性和广义线性模型基础中,作者指出二进制日期建模的分组数据和未分组数据之间存在差异。格式对推理无关紧要,但对拟合优度很重要。我很难在 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 被分为成功和失败。

您可以按 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