我正在尝试总结我的数据中有多少人接受过手术然后死亡;计算手术患者的死亡率。
我的数据如下所示
df <- data.frame(
y1988 = rep(c('Y', 'Y', 'Y', 'M', 'D', 'Y', 'Y', 'D', 'X', 'D'), 25),
y1989 = rep(c('Y', 'M', 'D', 'Y', 'X', 'Y', 'X', 'Y', 'Y', 'Y'), 25),
y1990 = rep(c('D', 'Y', 'D', 'X', 'Y', 'M', 'D', 'Y', 'Y', 'Y'), 25),
y1991 = rep(c('D', 'Y', 'Y', 'M', 'D', 'Y', 'Y', 'X', 'D', 'Y'), 25),
age = rep(20:69, 5),
ID = (1:250)
)
我想要做的是获取“D”数量的总和,并将其除以每年年龄(y1988 到 y1991)的“Y”数量。
如果我手动执行此操作,我将对每个年龄的数据帧进行子集化,然后将“D”的总和除以“Y”的总和,例如
a21 <- filter(df, age == 21)
a21$mort1988 <- sum(a21$y1988 == 'D') / sum(a21$y1988 == 'Y')
a21$mort1989 <- sum(a21$y1989 == 'D') / sum(a21$y1989 == 'Y')
等等
这看起来很荒谬,有没有有效的方法来做到这一点?
最佳答案
我们可以使用 summarise_at
对按“age”分组后的每个 yYear
列进行划分
df %>%
group_by(age) %>%
summarise_at(vars(matches("y\\d{4}")), funs(sum(.=="D")/sum(.=="Y")))
关于r - 计算因子变量的计数总和,作为 R 中数据帧的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799643/