计算因子变量的计数总和,作为 R 中数据帧的子集
Calculate the sum of the counts of a factor variable, as a subset of a dataframe in R
我想总结一下我的数据中有多少人接受过手术然后死去;计算手术患者的死亡率。
我的数据是这样的
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")))
我想总结一下我的数据中有多少人接受过手术然后死去;计算手术患者的死亡率。
我的数据是这样的
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")))