我有两个数据集,一个在个人级别,一个在学校级别。我想使用循环来计算每所学校的战斗比例(因为我有> 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
答案 0 :(得分:0)
我们可以按mean
library(dplyr)
df1 %>%
group_by(school_id) %>%
summarise(proportion_flight = mean(ever_flight))