【发布时间】:2022-08-16 21:11:07
【问题描述】:
我有一个包含大量变量的数据框,其中一个是所有其他变量都可以预测的死亡概率。 作为初步步骤,我想通过计算每个变量的死亡率来计算 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 计算为一组的死亡率,即 death_flags 的计数除以该组的人数,或者简单地说是平均 death_flag。当按重量分组时(比如低于和高于 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 的新列。
非常感谢您的帮助!
-
你的样本
df应该是data.frame(.)吗?此外,(80,92,61)应该是c(80,92,61)。请测试您提供给我们的代码。 -
你需要
dplyr::across()。关于 So 有很多很多问题,这将向您展示如何进行。
标签: r loops dplyr dynamic-variables