在R中添加具有%1的新列

在R中添加具有%1的新列,r,group-by,R,Group By,我有一个损耗数据集,我现在主要关注两个领域:部门和状态(终止或不终止)。现在,我想制作一个新的专栏,其中将有来自该特定部门的终止人员的百分比。 我无法将其添加到原始数据集中,但我能够创建由部门终止的数据集 dept <- data %>% group_by(dept, STATUS) %>% summarise(count = n()) %>% mutate(percent = count/sum(count) * 100) 现在我只想将原始数据集中状态Y的百分比列分别

我有一个损耗数据集,我现在主要关注两个领域:部门和状态(终止或不终止)。现在,我想制作一个新的专栏,其中将有来自该特定部门的终止人员的百分比。 我无法将其添加到原始数据集中,但我能够创建由部门终止的数据集

dept <- data %>% group_by(dept, STATUS) %>% summarise(count = n()) %>% mutate(percent = count/sum(count) * 100)
现在我只想将原始数据集中状态Y的百分比列分别添加到dept

编辑: 原始数据:

id  job_sat   dept   eth  status
 1     2       A      As    N
 2     1       C      Bl    Y
 .     .       .      .     .
 .     .       .      .     .
预期产出:

id  job_sat   dept   eth  status dept_per
 1     2       A      As    N      63..
 2     1       C      Bl    Y      59..
 .     .       .      .     .
 .     .       .      .     .

您可以通过以下方式找到每个部门中
状态==“Y”
的百分比:

library(dplyr)
data %>%  group_by(dept) %>% mutate(dept_per = mean(status == 'Y') * 100)
这类似于:

data %>% group_by(dept) %>% mutate(dept_per = sum(status == 'Y')/n() * 100) 

这也可以在
数据表中完成

library(data.table)
setDT(data)[, dept_per := mean(status == 'Y'), dept]
和基准R:

data$dept_per <- with(data, ave(status == 'Y', dept))
data$dept\u per试试这个


originaldf$dept_per您是否希望单独将百分比与Y进行比较,将NA与N进行比较?请共享可复制的数据data@ChrisRuehlemann请检查更新的ques@Mohanasundaram请查看我的原始数据集,我想在其中添加新列,该列将包含该列的%Ydept@RonakShah嗨ronak我能自己解决这个问题,这就是为什么删除了这个问题。很抱歉,我刚在新列中得到0您确定在
状态
列中有确切的“Y”而没有其他内容吗?没有空格或者没有小写字母“y”?你能用dput(head(data))更新你的帖子吗!非常感谢你!你是天才:)嘿,这里的deptdf是什么?新创建的数据帧?deptdf是以百分比表示的数据帧
data$dept_per <- with(data, ave(status == 'Y', dept))