У меня есть панельные данные для 300 тысяч человек (ID). Каждый ID имеет 1 строку в год (2013-2016). На основании «Кода» определяется статус «Имя» (за год). Однако некоторые ошибки все же есть. Если один идентификатор в моем фреймворке данных имеет определенное имя в определенном году, я хочу дать всем один и тот же код и год, а также это имя для того же кода и года. В случае, если ни у кого нет имени в поле «Имя» для указанного c кода и года, тогда будет достаточно NA. Это довольно сложно, потому что идентификаторы могут переключаться с кодами в течение многих лет (не в течение года).
Например: для идентификатора № 2 имя для 2014 года должно измениться с NA на PIZZA, в зависимости от тот факт, что другой идентификатор в фрейме данных (здесь # 1) имеет "PIZZA" для того же кода и года. Тем не менее, ID # 3 и ID # 4 остаются как NA в 2016 году, потому что ни у кого с кодом 05/1234 и годом 2016 нет имени в фрейме данных.
> str(Poging23)
tibble [16 x 5] (S3: tbl_df/tbl/data.frame)
$ ID : num [1:16] 1 1 1 1 2 2 2 2 3 3 ...
$ Date_of_birth: POSIXct[1:16], format: "2000-05-25" "2000-05-25" "2000-05-25" "2000-05-25" ...
$ Code : chr [1:16] "01/1234" "01/1234" "01/1234" "01/1234" ...
$ Year : num [1:16] 2013 2014 2015 2016 2013 ...
$ Name : chr [1:16] "PIZZA" "PIZZA" "NA" "NA" ...
> dput(Poging23)
structure(list(ID = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 4), Date_of_birth = structure(c(959212800, 959212800, 959212800,
959212800, 25315200, 25315200, 25315200, 25315200, 277862400,
277862400, 277862400, 277862400, 1267574400, 1267574400, 1267574400,
1267574400), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
Code = c("01/1234", "01/1234", "01/1234", "01/1234", "01/1234",
"01/1234", "01/1234", "01/1234", "01/1234", "01/1234", "05/1234",
"05/1234", "05/1234", "05/1234", "05/1234", "05/1234"), Year = c(2013,
2014, 2015, 2016, 2013, 2014, 2015, 2016, 2013, 2014, 2015,
2016, 2013, 2014, 2015, 2016), Name = c("PIZZA", "PIZZA",
"NA", "NA", "NA", "NA", "PIZZA", "NA", "NA", "PIZZA", "NA",
"NA", "PASTA", "PASTA", "PASTA", "NA")), row.names = c(NA,
-16L), class = c("tbl_df", "tbl", "data.frame"))
К сожалению, эти коды не работали должным образом (не учитывались изменения в коде за последние годы): Как изменить NA идентификатора на символьное значение на основе других значений / характеристик ячеек идентификатора в R?.
Изменить: я назвал NA как " NA ", потому что сначала я сделал предварительный просмотр в Excel.
Также можно изменить все имена на 1, а NA на 0, если это облегчит задачу.
Надеюсь, кто-нибудь сможет мне помочь / давать советы!
Спасибо!