r - 计算因子变量的计数总和,作为 R 中数据帧的子集

标签 r sum factors

我正在尝试总结我的数据中有多少人接受过手术然后死亡;计算手术患者的死亡率。

我的数据如下所示

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/

相关文章:

带有十六进制颜色的 R 散点图

r - 计算字符串向量中连续数字的函数

为 ARM (Raspberry Pi) 交叉编译 R

python - Tensorflow:如何在调用 tf.reduce_sum 时忽略数组的一部分

MySQL 分组依据 where day <= x

php - 找到特定数字的质因数

c++ - 如何在 Windows R 中显示 C++ 输出消息

r - dplyr:group_by 和 group_by_ 函数有什么区别?

mysql - 如何获取单列值的 sum()

python - 初级素因数分解