在 R 中重新格式化输入输出 table
Reformat input-output table in R
我有一个输入输出 table,其中起点(输入字段)为行,目标(输出字段)为列。这是一个例子:
Mexico Thailand Vietnam
USA 0 3 6
Italy 3 7 8
France 9 3 1
Germany 3 6 7
我想转换 table 以便起点在第 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
有一个使用 reshape2 包中的 melt 函数的简单解决方案:
#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")
我有一个输入输出 table,其中起点(输入字段)为行,目标(输出字段)为列。这是一个例子:
Mexico Thailand Vietnam
USA 0 3 6
Italy 3 7 8
France 9 3 1
Germany 3 6 7
我想转换 table 以便起点在第 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
有一个使用 reshape2 包中的 melt 函数的简单解决方案:
#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")