生成汇总表以显示数据框中每个组的传播

时间:2018-12-06 06:16:18

标签: r tidyverse

数据如下:

Year   State   Grade   Yes   
2000   AZ      A       1
2000   AZ      A       0
2000   AZ      A       1
2000   AZ      B       1
2000   AZ      B       1
2000   CA      A       1
2000   CA      A       0
2000   CA      B       0
2000   NY      A       1
2000   NY      A       1
2001   NY      B       1

我想做的是创建一个表,该表在“是”列中显示1的总和,作为每个组的一部分。结果表将根据年份,州和等级显示每个组的值。看起来像这样:

Year   Grade   AZ     CA   NY
2000   A       0.667  0.5  1
2000   B       1      0    1
2001   A       0      0    0
2001   B       0      0    1

该数据还有更多的信息,包括Year,Grade和State的多个值,因此该表将更大,但实际上它将基于这三个变量返回每个组的比例。

到目前为止,我的代码如下:

library(tidyverse)
data %>%
    group_by(Year, State, Grade) %>%
    summarise(x = Yes / count(Yes)) %>%
    spread(State, x)

1 个答案:

答案 0 :(得分:2)

你很近... 第二行代码是可选的,以获取所有组合。 只需获得sum的{​​{1}},然后除以每组的行数(= {Yes)。然后进行扩展,如果您想让NA = 0,请不要忘记n()结尾。

fill = 0