我有以下数据框:
df <- read.table(text = "group age status
A 25 yes
A 32 no
A 58 yes
A 78 no
A 76 yes
B 21 no
B 71 yes
B 43 no
B 48 no
C 39 no
C 82 yes
C 87 no
C 91 yes", header = T)
我想要GROUP_BY GROUP列,然后以这样一种方式进行汇总:如果年龄小于50且状态为"yes",则计算这些值,然后计算年龄小于50的值的总数. 因此,对于数据框中的‘A’:
age_lt_50_yes = 1
age_lt_50 = 2
同样,对于年龄大于50岁的人,如果是,然后年龄大于50岁; 对于‘A’;这将是:
age_gt_50_yes = 2
age_gt_50 = 3
我实际上希望AGE_lt_50_yes/age_lt_50的比率为1/2,A的AGE_GT_50_YES/AGE_GT_50=2/3
如果不管怎样,我遇到了这样一种情况,我有这样的0/0;那么我只想要0作为输出.
如何使用dplyr执行此操作?
以下是我try 过的:
df %>%
group_by(group) %>%
summarize(age_le50_prop = sum(age <= 50) / n(),
age_gt50_prop = sum(age > 50) / n())
我需要在汇总函数中添加状态
我的输出应该如下所示:
group_by age_lt_50 age_gr_50
A 0.5 0.66
B 0 1
C 0 0.66