У меня есть набор данных с более чем 150000 строк и около 40 переменных.В моем наборе данных каждая строка представляет встречу с человеком, и у каждого есть уникальный идентификатор.Тем не менее, некоторые люди возвращаются несколько раз в течение определенного периода времени, и я хотел бы иметь возможность отразить это так, чтобы уникальный идентификатор стал специфическим для индивидуума, а не для встречи.
Вот примерный набор данных:
df <- data.frame(
ID = c(101:110),
Name = c("AA", "BB", "AA", "DD", "EE", "FF", "AA", "GG", "DD", "HH"),
Age = c(1, 56, 1, 72, 12, 43, 1, 32, 72, 99),
Group = c(1, 2, 1, 2, 1, 4, 1, 3, 2, 4),
Date = seq(from = as.Date("2019-01-01"), to = as.Date("2019-01-10"), by = 'day'),
Order = c("re-do", "first", "first", "first", "re-do", "first", "re-do", "first", "re-do", "first"),
Site = c(2, 54, 2, 522, 3, 490, 2, 23, 522, 21)
)
Что выглядит следующим образом:
ID Name Age Group Date Order Site
1 101 AA 1 1 2019-01-01 re-do 2
2 102 BB 56 2 2019-01-02 first 54
3 103 AA 1 1 2019-01-03 first 2
4 104 DD 72 2 2019-01-04 first 522
5 105 EE 12 1 2019-01-05 re-do 3
6 106 FF 43 4 2019-01-06 first 490
7 107 AA 1 1 2019-01-07 re-do 2
8 108 GG 32 3 2019-01-08 first 23
9 109 DD 72 2 2019-01-09 re-do 522
10 110 HH 99 4 2019-01-10 first 21
Чтобы значение столбца (в столбце «ID») было одинаковым, должны быть выполнены следующие условия:
- Значение идентификатора строки, которая должна быть скопирована, должно быть из строки с Порядком "first"
- Строки, имеющие новое значение идентификатора, должны быть изстрока с порядком «re-do»
- Они должны иметь одинаковые значения в столбцах
"name" + "age" + "group" + "site"
- Дата строк с новым значением ID должна быть датой, следующей за"first"
Окончательный набор данных должен выглядеть следующим образом:
ID Name Age Group Date Order Site
<dbl> <fct> <dbl> <dbl> <date> <fct> <dbl>
1 101 AA 1 1 2019-01-01 re-do 2
2 102 BB 56 2 2019-01-02 first 54
3 103 AA 1 1 2019-01-03 first 2
4 104 DD 72 2 2019-01-04 first 522
5 105 EE 12 1 2019-01-05 re-do 3
6 106 FF 43 4 2019-01-06 first 490
7 103 AA 1 1 2019-01-07 re-do 2
8 108 GG 32 3 2019-01-08 first 23
9 104 DD 72 2 2019-01-09 re-do 522
10 110 HH 99 4 2019-01-10 first 21