Recolher todas as colunas por uma coluna de ID [duplicada]
Esta pergunta já tem uma resposta aqui:
Recolher / concatenar / agregar uma coluna em uma única sequência separada por vírgula em cada grupo 2 respostasEstou tentando fazer algo parecido com o que é respondido aqui, o que me deixa 80% do caminho. Eu tenho um quadro de dados com uma coluna de identificação e várias colunas de informações. Eu gostaria de enrolartodo das outras colunas para que haja apenas uma linha para cada ID e várias entradas sejam separadas por, por exemplo, um ponto e vírgula. Aqui está um exemplo do que tenho e do que quero.
TER
ID info1 info2
1 id101 one first
2 id102 twoA second alias A
3 id102 twoB second alias B
4 id103 threeA third alias A
5 id103 threeB third alias B
6 id104 four fourth
7 id105 five fifth
QUER
ID info1 info2
1 id101 one first
2 id102 twoA; twoB second alias A; second alias B
3 id103 threeA; threeB third alias A; third alias B
4 id104 four fourth
5 id105 five fifth
Aqui está o código usado para gerar aqueles:
have <- data.frame(ID=paste0("id", c(101, 102, 102, 103, 103, 104, 105)),
info1=c("one", "twoA", "twoB", "threeA", "threeB", "four", "five"),
info2=c("first", "second alias A", "second alias B", "third alias A", "third alias B", "fourth", "fifth"),
stringsAsFactors=FALSE)
want <- data_frame(ID=paste0("id", c(101:105)),
info1=c("one", "twoA; twoB", "threeA; threeB", "four", "five"),
info2=c("first", "second alias A; second alias B", "third alias A; third alias B", "fourth", "fifth"),
stringsAsFactors=FALSE)
Essa questã fez basicamente a mesma pergunta, mas apenas uma única coluna "informações". Tenho várias outras colunas e gostaria de fazer isso para todas elas.
Pontos de bônus por fazer isso usando o dply