重新格式化R中的输入输出表

时间:2016-06-07 15:33:15

标签: r reformat

我有一个输入输出表,其中origin(输入字段)为行,目标(输出字段)为列。这是一个例子:

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

我想转换表,以便原点位于column1中,destination位于第2列,value位于第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 个答案:

答案 0 :(得分: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")