数据如下:
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)
答案 0 :(得分:2)
你很近...
第二行代码是可选的,以获取所有组合。
只需获得sum
的{{1}},然后除以每组的行数(= {Yes
)。然后进行扩展,如果您想让NA = 0,请不要忘记n()
结尾。
fill = 0