2016-06-07 14 views
2

Ich habe eine Eingabe-Ausgabetabelle mit dem Ursprung (Eingabefeld) als Zeilen und dem Ziel (Ausgabefeld) als Spalten. Hier ein Beispiel:Eingabe-Ausgabe-Tabelle neu formatieren in R

Mexico Thailand Vietnam 
USA 0 3 6 
Italy 3 7 8 
France 9 3 1 
Germany 3 6 7 

Ich möchte die Tabelle konvertieren, so dass der Ursprung in column1 ist, das Ziel in Spalte 2, und der Wert ist in Spalte 3, so dass es wie folgt aussehen:

origin destination value 
USA Mexico 0 
USA Thailand 3 
USA Vietnam 6 
Italy Mexico 3 
Italy Thailand 7 
Italy Vietnam 8 
France Mexico 9 
France Thailand 3 
France Vietnam 1 
Germany Mexico 3 
Germany Thailand 6 
Germany Vietnam 7 

Antwort

1

Es gibt eine einfache Lösung, um die Schmelzfunktion aus dem reshape2 Paket mit:

#sample data 
Mexico<-c(0, 3, 9,3) 
Thailand <-c(3, 7, 3, 6) 
Vietnam <-c(6, 8, 1, 7) 
names<-c("USA", "Italy", "France", "Germany") 
df<-data.frame(names, Mexico, Thailand, Vietnam) 

library(reshape2) 
melt(df) 

Das Paket „tidyr“, um eine ähnliche Funktionalität aufweist.

library(tidyr) 
gather(df, "names")