Estou tendo o seguinte problema ao fazer algumas análises com R.
Eu tenho um quadro de dados como este:
Name | Group | Count
Person 1 | A | 3
Person 2 | A | 1
Person 3 | A | 0
Person 1 | B | 5
Person 2 | B | 0
Person 3 | B | 1
Person 1 | C | 1
e eu precisaria "expandi-lo" (não tenho certeza se o termo certo) para ficar assim:
Person 1 | A
Person 1 | A
Person 1 | A
Person 2 | A
Person 1 | B
Person 1 | B
etc.
Portanto, ele pega o valor do par Pessoa 1 e A (neste exemplo, 3) e faz três linhas com a Pessoa 1 e A e o faz para todas as combinações Pessoa - Grupo. Não consigo encontrar boas palavras para pesquisar online.
reshape()
funçãoreshape2
pacote em R. Também pode ajudardput
2 exemplos de quadros de dados: um com a entrada e outro com a saída.Respostas:
Embora seja um pacote muito útil, acho que a reformulação é um exagero nesse caso, o representante pode fazer o trabalho.
Aqui estão alguns dados de exemplo:
Agora, para "expandi-lo":
Não consegui encontrar uma maneira de trabalhar diretamente no quadro de dados em cima da minha cabeça, por isso estou trabalhando em cada variável separadamente e depois remontando-as, o que é um pouco feio, mas deve ficar bem desde que você cuide sempre de usar a mesma variável para as contagens.
fonte
df[rep(seq_len(nrow(df)), df$count), 1:2]
:?Você pode usar a função untable do pacote remodelar.
Dado o df acima (por @ Gaël Laurans)
fonte
untable
faz exatamente o que eu mencionei no meu comentário :-) Obrigado por me lembrar dessa função!E a
uncount
partir detidyr
agora dá o mesmo resultado que acima.fonte