我有两个数据集,一个在个人层面,另一个在学校层面。我想用一个循环来计算每个学校的打架比例(因为我有100多所学校)。
当前代码:
for (i in levels(df$school_id)) {
school <- subset(df, school_id == i)
number_students <- nrow(school)
prop <- (sum(school$fight_binary, na.rm = TRUE))/number_students
df$proportion_fight[df$school_id == i] <- prop
}
我首先尝试初始化新列,但是当我运行这个循环时,什么也没有发生。
下面是一些示例数据
个人级别:
student_id school_id ever_fight
1 2 1
2 3 0
3 1 1
4 1 1
5 2 0
6 2 0
7 2 0
8 2 0
9 3 1
10 1 0
11 3 1
12 3 1
13 3 1
14 3 1
15 1 0
16 2 0
17 1 0
18 1 0
19 1 0
20 1 0
学校级别(需要用上面的数据填写第二列):
school_id proportion_fight
1
2
3
发布于 2019-06-08 03:27:25
我们可以使用mean
的群组
library(dplyr)
df1 %>%
group_by(school_id) %>%
summarise(proportion_flight = mean(ever_flight))
https://stackoverflow.com/questions/56500142
复制相似问题