У меня есть ужасно грязные данные, которые я действительно пытаюсь очистить. Пример вопроса ниже:tidyr/dplyr - распространение нескольких переменных для повторяющихся идентификаторов
ID NAME ADDRESS EMAIL PHN
1 Alice 123 Street [email protected] 5555555
1 Alice 123 Street <NA> 4444444
2 Bob 9 Circle [email protected] 1111111
3 Charlie 4 Ave [email protected] 3333333
3 Charlie 4 Ave [email protected] 3333333
3 Charlie 4 Ave <NA> NA
4 Doug 1 Court <NA> 6666666
Нужный выход что-то вроде этого:
ID NAME ADDRESS EMAIL_1 EMAIL_2 PHN_1 PHN_2
1 Alice 123 Street [email protected] <NA> 5555555 4444444
2 Bob 9 Circle [email protected] <NA> 1111111 NA
3 Charlie 4 Ave [email protected] [email protected] 3333333 NA
4 Doug 1 Court <NA> <NA> 6666666 NA
С пониманием того, что может быть произвольное расширение переменных EMAIL
и PHN
(то есть, может быть п повторений ID, которые имеют разные (или NA
) значения)
Мое решение до сих пор:.
df.test <- df %>%
group_by(ID) %>%
mutate(EMAILID = paste0("EMAIL_",row_number())) %>%
spread(EMAILID,EMAIL) %>%
mutate(PHONEID = paste0('PHN_',row_number())) %>%
spread(PHONEID,PHN)
Но это приводит к еще более искаженный data.frame:
ID NAME ADDRESS EMAIL_1 EMAIL_2 EMAIL_3 PHN_1 PHN_2 PHN_3
1 Alice 123 Street [email protected] <NA> <NA> 5555555 NA NA
1 Alice 123 Street <NA> <NA> <NA> NA 4444444 NA
2 Bob 9 Circle [email protected] <NA> <NA> 1111111 NA NA
3 Charlie 4 Ave [email protected] <NA> <NA> 3333333 NA NA
3 Charlie 4 Ave <NA> [email protected] <NA> NA 3333333 NA
3 Charlie 4 Ave <NA> <NA> <NA> NA NA NA
4 Doug 1 Court <NA> <NA> <NA> 6666666 NA NA
Любая помощь? Я подозреваю, что моя проблема связана с командой spread()
, но мои попытки до сих пор оказались бесплодными. Благодарю.
Что произойдет, если вы выберете мутации? –
@RyanMorton: если заменить код: '' 'df.test <- df %>% group_by (ID)%>% спрэд (ID, EMAIL)%>% спрэд (ID, НЗП)' '' Я получаю сообщение об ошибке: Дублирующие идентификаторы для строк (4,5) –
Хм, не могли бы вы добавить NAME в group_by? –