将列添加到数据框,并从另一个数据框进行循环计算

时间:2019-06-07 19:19:42

标签: r for-loop data-manipulation data-management

我有两个数据集,一个在个人级别,一个在学校级别。我想使用循环来计算每所学校的战斗比例(因为我有> 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

1 个答案:

答案 0 :(得分:0)

我们可以按mean

使用分组
library(dplyr)
df1 %>% 
     group_by(school_id) %>% 
     summarise(proportion_flight = mean(ever_flight))