我有一些非常脏数据我真的很挣扎清洁。这个问题的一个例子是下面:tidyr/dplyr - 扩频多变量重复的ID
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,电子邮件)%>% 传播(ID,PHN)''' 我得到错误:重复的标识符行(4,5) –
嗯,你能添加名称到GROUP_BY? –