Как обновить значение столбца сгруппированных данных на основе определенного условия? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь создать модель прогнозирования истощения сотрудников. Я создал несколько строк для каждого сотрудника, чтобы включить его время в набор данных.

Столбцы для просмотра:

HIRE_DATE TERMINATION_DATE EMP_STATUS NROW YEAR_RANGE

Мое обновление: Если сотрудник все еще находится в компании, дата увольнения равна SysDate (13 апреля 2019 г., т.е. сегодня), в противном случае сотрудник больше не активен.

У каждого сотрудника столько строк, сколько и его владения. Например, если сотрудник присоединился в 2015 году и ушел в отставку в 2018. Тогда у нас есть 4 строки для этого сотрудника. Я хочу, чтобы EMP_STATUS был 0 за все годы, когда он был сотрудником, и 1, когда он ушел. Т.е., если сотрудник ушел из компании, т. е. дата увольнения! = сегодняшняя дата, тогда я хочу, чтобы последняя строка этого сотрудника была обновлена ​​с EMP_STATUS = 1, иначе никаких изменений.

В примере набора данных EMP_STATUS изменится для третьей строки nrow=1

Извлечение последней строки для расширенных годовых данных

hris_last_active_year <- hris_yearlyData %>% 
                           group_by(nrow) %>% 
                           slice(which.max(year_range))

Выше приведен последний ряд. Я могу применить условие для обновления emp_status как 1, если дата завершения не равна текущей дате. Я подумал о том, чтобы получить предыдущие строки в другом наборе данных и объединить оба набора данных. Я попробовал приведенный ниже код, но это не дает мне правильный результат.

hris_before_last_active_year <- hris_yearlyData %>% group_by(nrow) %>% 
                              filter(year_range<which.max(year_range))

Может кто-нибудь помочь мне найти правильное решение?

Кроме того, я хотел бы отметить, что фактический набор данных имеет 3 миллиона строк.

с учетом сегодняшней даты 04-13-2019

Исходный набор данных

 nrow HIRE_DATE TERMINATION_DATE    EMP_STATUS
 1   01-05-2016       03-06-2018        0
 2   01-05-2015               NA        0

Преобразованный набор данных (Мой проблемный набор данных)

nrow HIRE_DATE TERMINATION_DATE EMP_STATUS year_range
1   01-05-2016       03-06-2018          0 01-05-2016
1   01-05-2016       03-06-2018          0 01-05-2017
1   01-05-2016       03-06-2018          0 01-05-2018
2   01-05-2015       04-13-2019          0 01-05-2015
2   01-05-2015       04-13-2019          0 01-05-2016
2   01-05-2015       04-13-2019          0 01-05-2017
2   01-05-2015       04-13-2019          0 01-05-2018
2   01-05-2015       04-13-2019          0 01-05-2019

Ожидаемый набор данных

nrow HIRE_DATE TERMINATION_DATE EMP_STATUS year_range
   1 01-05-2016      03-06-2018          0 01-05-2016
   1 01-05-2016      03-06-2018          0 01-05-2017
   1 01-05-2016      03-06-2018          1 01-05-2018
   2 01-05-2015      04-13-2019          0 01-05-2015
   2 01-05-2015      04-13-2019          0 01-05-2016
   2 01-05-2015      04-13-2019          0 01-05-2017
   2 01-05-2015      04-13-2019          0 01-05-2018
   2 01-05-2015      04-13-2019          0 01-05-2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...