2016-06-07 141 views
2

我有一個輸入輸出表,其中原點(輸入字段)爲行,目標(輸出字段)爲列。這裏有一個例子:重新格式化輸入輸出表R

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

我想將錶轉換,使原產地是在列1,目的是在第2列,並且值在第3列,以便它看起來像這樣:

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 

回答

1

存在使用熔體函數從reshape2封裝的簡單的解決方案:

#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) 

包「tidyr」具有類似的功能。

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