У меня есть проблема манипулирования данными, для которой я могу решить обе импутации по отдельности, но не обе одновременно.У меня есть набор данных треков, который сгруппирован по ID
(разные лица), у каждого трека есть время начала, время окончания, уникальный идентификатор и иногда транспортный режим (но это может отсутствовать).Скажем только, что в процессе сбора данных возникали некоторые ошибки, и теперь многие треки были сохранены несколько раз (т.е. треки с разными идентификаторами командировок, но с одним и тем же идентификатором человека, временем начала и тем же временем окончания или треками с одинаковыми данными).идентификатор человека, время начала и другое время окончания или виды транспорта. Я выяснил, что правильный способ обработки этих данных - это трек с тем же идентификатором человека и точно таким же временем начала, чтобы сохранить последнее время окончания и режим перемещения.принадлежность к самому высокому идентификатору поездки. Так что бывает, что поездка с одним и тем же временем начала имеет разные режимы поездки, и в этом случае я хочу, чтобы режим поездки относился к самому высокому идентификатору поездки (сгруппированный по идентификатору человека и времени начала)Однако, эта поездка не обязательно имеет самое позднее время окончания, и мне нужно сохранить для каждой поездки самое последнее время окончания в этой группе (идентификатор человека и время начала). Если для определенной поездки вообще нет режима путешествия,это также должно остаться пропущенным. Извинения за то, что я cant, опишите это как-нибудь поподробнее, надеюсь, пример объясняет то, что я ищу:
input
| ID_person | ID_Track | START | END | mode |
|-----------|----------|-------|-----|------|
| 1 | 1 | 8 | 10 | A |
| 1 | 2 | 8 | 10 | NA |
| 1 | 3 | 8 | 10 | B |
| 1 | 4 | 8 | 11 | NA |
| 1 | 5 | 8 | 10 | A |
| 1 | 6 | 8 | 11 | C |
| 1 | 7 | 12 | 13 | NA |
| 1 | 8 | 12 | 13 | A |
| 1 | 9 | 14 | 15 | NA |
| 2 | 10 | 8 | 9 | NA |
| 2 | 11 | 8 | 9 | NA |
| 2 | 12 | 8 | 11 | A |
| 2 | 13 | 8 | 9 | D |
| 2 | 14 | 8 | 10 | B |
| 2 | 15 | 12 | 13 | D |
| 2 | 16 | 15 | 16 | NA |
что я хочу
| ID_person | ID_Track | START | END | mode |
|-----------|----------|-------|-----|------|
| 1 | 1 | 8 | 11 | C |
| 1 | 2 | 8 | 11 | C |
| 1 | 3 | 8 | 11 | C |
| 1 | 4 | 8 | 11 | C |
| 1 | 5 | 8 | 11 | C |
| 1 | 6 | 8 | 11 | C |
| 1 | 7 | 12 | 13 | A |
| 1 | 8 | 12 | 13 | A |
| 1 | 9 | 14 | 15 | NA |
| 2 | 10 | 8 | 11 | B |
| 2 | 11 | 8 | 11 | B |
| 2 | 12 | 8 | 11 | B |
| 2 | 13 | 8 | 11 | B |
| 2 | 14 | 8 | 10 | B |
| 2 | 15 | 12 | 13 | D |
| 2 | 16 | 15 | 16 | NA |
некоторый код для получения ввода
df <- structure(list(ID_person = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), ID_Track = 1:16, START = c(8L,
8L, 8L, 8L, 8L, 8L, 12L, 12L, 14L, 8L, 8L, 8L, 8L, 8L, 12L, 15L
), END = c(10L, 10L, 10L, 11L, 10L, 11L, 13L, 13L, 15L, 9L, 9L,
11L, 9L, 10L, 13L, 16L), mode = c("A", NA, "B", NA, "A", "C",
NA, "A", NA, NA, NA, "A", "D", "B", "D", NA)), .Names = c("ID_person",
"ID_Track", "START", "END", "mode"), row.names = c(NA, -16L), class = "data.frame")