【问题标题】:Add column to data frame with loop calculation from another data frame使用来自另一个数据帧的循环计算将列添加到数据帧
【发布时间】:2019-06-07 19:19:42
【问题描述】:

我有两个数据集,一个在个人层面,一个在学校层面。我想使用循环计算每所学校的战斗比例(因为我有> 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 LEVEL(需要用上面的数据填充第二列):

 school_id    proportion_fight
         1
         2
         3

【问题讨论】:

  • 我觉得你需要library(dplyr); df1 %&gt;% group_by(school_id) %&gt;% summarise(proportion = mean(ever_flight))
  • 是的,有效!谢谢!

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


【解决方案1】:

我们可以使用mean的群组

library(dplyr)
df1 %>% 
     group_by(school_id) %>% 
     summarise(proportion_flight = mean(ever_flight))

【讨论】:

    猜你喜欢
    • 2019-06-22
    • 2021-12-23
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多