Добавить новый столбец с% в R - PullRequest
1 голос
/ 08 мая 2020

У меня есть набор данных об истощении, где я сейчас сосредоточен на двух полях: отдел и статус (прекращено или нет). Теперь я хочу создать новую колонку, в которой будет процент людей, уволенных из указанного c отдела. Я не могу добавить это в исходный набор данных, но я смог создать набор данных с% завершением по отделам с помощью этого.

dept <- data %>% group_by(dept, STATUS) %>% summarise(count = n()) %>% mutate(percent = count/sum(count) * 100)

Что вернуло отдел, количество и процент завершения.

dept status count percent
 A      Y    80     63..
 A      N    46     36...
 B      Y    30     20..
 .      .    .       .
 .      .    .       .

Теперь я просто хочу добавить столбец процентов статуса Y в исходный набор данных, соответствующий отделу.

Редактировать: исходные данные:

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..
 .     .       .      .     .
 .     .       .      .     .

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Попробуйте это

originaldf $ dept_per <- with (deptdf [deptdf $ status == "Y",], count [match (originaldf $ dept, dept)]) </p>

1 голос
/ 08 мая 2020

Вы можете найти процентное соотношение status == '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) 

Это также можно сделать в data.table

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

и основание R:

data$dept_per <- with(data, ave(status == 'Y', dept))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...