Muitas vezes, pode querer empilhar duas ou mais colunas de quadros de dados numa coluna no R.

Por exemplo, pode querer passar desta forma:

 pessoa ensaio resultado1 resultado2 A 1 7 4 A 2 6 4 B 1 6 5 B 2 5 5 C 1 4 3 C 2 4 2 

A isto:

 pessoa ensaio resultados valor A 1 resultado1 7 A 2 resultado1 6 B 1 resultado1 6 B 2 resultado1 5 C 1 resultado1 4 C 2 resultado1 4 A 1 resultado2 4 A 2 resultado2 4 B 1 resultado2 5 B 2 resultado2 5 C 1 resultado2 3 C 2 resultado2 2 

Este tutorial explica dois métodos que pode utilizar no R para o fazer.

Método 1: Utilizar a função Stack na Base R

O código a seguir mostra como empilhar colunas usando o pilha na base R:

 #criar a base de dados original data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'), trial=c(1, 2, 1, 2, 1, 2), outcome1=c(7, 6, 6, 5, 4, 4), outcome2=c(4, 4, 5, 5, 3, 2)) #empilhar a terceira e quarta colunas cbind (data[1:2], stack (data[3:4])) person trial values ind 1 A 1 7 outcome1 2 A 2 6 outcome1 3 B 1 6 outcome1 4 B 2 5 outcome1 5 C 1 4 outcome1 6 C 2 4 outcome1 7 A 1 4 outcome2 8 A 24 resultado2 9 B 1 5 resultado2 10 B 2 5 resultado2 11 C 1 3 resultado2 12 C 2 2 resultado2 

Método 2: Utilizar a função Melt do Reshape2

O código a seguir mostra como empilhar colunas usando o derreter da função remodelar2 biblioteca:

 #load library library(reshape2) #create original data frame data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'), trial=c(1, 2, 1, 2, 1, 2), outcome1=c(7, 6, 6, 5, 4, 4), outcome2=c(4, 4, 5, 5, 3, 2)) #melt columns of data frame melt(data, id. var = c(' person ', ' trial '), variable.name = ' outcomes ') person trial outcomes value 1 A 1 outcome1 7 2 A 2 outcome1 6 3 B 1 outcome1 6 4 B 2resultado1 5 5 C 1 resultado1 4 6 C 2 resultado1 4 7 A 1 resultado2 4 8 A 2 resultado2 4 9 B 1 resultado2 5 10 B 2 resultado2 5 11 C 1 resultado2 3 12 C 2 resultado2 2 

Pode encontrar a documentação completa da função de fusão aqui.