У меня есть фрейм данных с person_ID, Job_ID, Municipality_code и некоторыми другими переменными (см. Пример фрейма данных ниже).Переменная Job_ID измеряется ежемесячно, а код муниципалитета - на год.
as.data.frame(df)
Person_ID Month Year Job_ID Municipality_code
1 1 1 2017 Job1 1
2 1 2 2017 Job1 1
3 1 3 2017 Job1 1
4 1 4 2017 Job1 1
5 1 5 2017 Job2 1
6 1 6 2017 Job2 1
7 1 7 2017 Job2 1
8 1 8 2017 Job2 1
9 1 9 2017 Job2 1
10 1 10 2017 Job2 1
11 1 11 2017 Job2 1
12 1 12 2017 Job2 1
13 1 1 2018 Job2 20
14 1 2 2018 Job2 20
15 1 3 2018 Job2 20
16 1 4 2018 Job2 20
17 1 5 2018 Job2 20
18 1 6 2018 Job2 20
19 1 7 2018 Job2 20
20 1 8 2018 Job2 20
21 1 9 2018 Job2 20
22 1 10 2018 Job2 20
23 1 11 2018 Job2 20
24 1 12 2018 Job2 20
Я хочу исправить код муниципалитета для каждого Person_ID на основе их идентификатора Job_ID.Например: мы заметили, что Person_ID 1 меняет работу в пятом месяце 2017 года (Job1 -> Job2).Из-за свойств Municipality_code
код останется 1 (потому что на 1-2017 у нас был Job1 с соответствующим Municipality_code
1).Мне нужен кусок кода, который исправляет Municipality_code
(таким образом, с 5/2017 нам нужно Municipality_code
20 вместо 1).Я попробовал следующий фрагмент кода, но мои усилия были напрасны.
df2 <- df %>%
group_by(Person_ID) %>%
dplyr::mutate(lag = lag(Job_ID, default = NA, order_by = Job_ID),
Municipality_corrected = if_else(Job_ID == lag, Municipality_code[1], Municipality_code[2]))
И желаемый результат ...
Person_ID Month Year Job_ID Municipality_code lag Municipality_corrected
1 1 1 2017 Job1 1 <NA> NA
2 1 2 2017 Job1 1 Job1 1
3 1 3 2017 Job1 1 Job1 1
4 1 4 2017 Job1 1 Job1 1
5 1 5 2017 Job2 1 Job1 1
6 1 6 2017 Job2 1 Job2 20
7 1 7 2017 Job2 1 Job2 20
8 1 8 2017 Job2 1 Job2 20
9 1 9 2017 Job2 1 Job2 20
10 1 10 2017 Job2 1 Job2 20
11 1 11 2017 Job2 1 Job2 20
12 1 12 2017 Job2 1 Job2 20
13 1 1 2018 Job2 20 Job2 20
14 1 2 2018 Job2 20 Job2 20
15 1 3 2018 Job2 20 Job2 20
16 1 4 2018 Job2 20 Job2 20
17 1 5 2018 Job2 20 Job2 20
18 1 6 2018 Job2 20 Job2 20
19 1 7 2018 Job2 20 Job2 20
20 1 8 2018 Job2 20 Job2 20
21 1 9 2018 Job2 20 Job2 20
22 1 10 2018 Job2 20 Job2 20
23 1 11 2018 Job2 20 Job2 20
24 1 12 2018 Job2 20 Job2 20