r-计算由第二个变量分组的一个变量的平均值的最简单方法是什么,迭代所有第二个参数dplyr



我有一个包含大量变量的数据框架,其中一个变量是所有其他变量预测的死亡概率。作为初步步骤,我想通过计算每个变量的死亡率来计算PoD。

比方说df <- (age = c(25, 57, 60), weight = (80, 92, 61), cigarettes_a_day = c(30, 2, 19), death_flag=c(1,0,1))

然后我可以按年龄分组(比如50岁以下和50岁以上(,并将PoD计算为一组的死亡率,即死亡滞后数除以该组的人数,或者简单地计算为平均死亡滞后。当按重量分组时(比如低于和高于80(,我将获得不同的死亡率,从而为每个装箱变量获得不同的PoD,这正是我想要的。我的问题出现在尝试遍历所有变量时。

到目前为止,我已经尝试了以下代码的变体,但都不起作用:

for(n in names(df)) {
df%>% group_by(n)%>%
summarise(PoD_bin = mean(death_flag))
}

我还没有找到一种方法来遍历所有变量并执行计算。

顺便说一句,我在没有dplyr的情况下对变量进行了装箱:

for(v in names(df[-1])){
newVar <- paste(f, "bin", sep = "_")
df[newVar] <- cut(as.matrix(df[v]), breaks = 100)
}

我很恼火,因为我不能在第一个for循环中引用变量进行分组,而我可以在第二个循环中这样做来创建df的新列。

非常感谢您的帮助!

您的循环不起作用,因为一个字符被解析为group_by。你可以稍微修改一下你的循环,得到想要的结果。我添加了print()以查看输出。

for (n in names(df)) {

df |>
group_by(!!sym(n)) |>
summarise(PoD_bin = mean(death_flag)) |>
print()

}

输出:

# A tibble: 3 × 2
age PoD_bin
<dbl>   <dbl>
1    25       1
2    57       0
3    60       1
# A tibble: 3 × 2
weight PoD_bin
<dbl>   <dbl>
1     61       1
2     80       1
3     92       0
# A tibble: 3 × 2
cigarettes_a_day PoD_bin
<dbl>   <dbl>
1                2       0
2               19       1
3               30       1
# A tibble: 2 × 2
death_flag PoD_bin
<dbl>   <dbl>
1          0       0
2          1       1

数据:

df <- tibble(age = c(25, 57, 60), weight = c(80, 92, 61), cigarettes_a_day = c(30, 2, 19), death_flag=c(1,0,1))

相关内容

  • 没有找到相关文章

最新更新