编码要指导的贸易数据

时间:2019-05-18 13:11:26

标签: r direction

我想在R和非洲之间建立一个贸易地图(进口数据)。基本上,我只列出了4个变量,如下表所示(约有14.000个观测值)。 Import1和Import2是两国贸易,其中flow1是从import2进口的import1进口,flow2是从import1进口的import2进口。

import1 import2 flow1 flow2

Algeria Tunisia   113.96    130.01

Algeria Libya     1.966 11.19

Algeria Sudan     0.0165   0

我不知道的是如何让R读取flow1作为import2-> import1的方向,而flow2作为贸易方向import1-> import2。只是在寻找有关如何在R中对此部分进行编码的指南,因为到目前为止,我确实还找不到任何可以在线帮助的内容。谢谢!

我用4个变量制作了一个数据框,但它只使用import1和import2,并认为import1-> import2是连接。

df1 <- Trade_Data %>% 
       filter(year == 2003) %>% 
       select(importer1, importer2, flow1, flow2)
df1 <-df1[!(df1$flow1== 0 & df1$flow2==0),]
View(df1)
g1 <- graph.data.frame(df1, directed = T)
g1

我希望输出的是阿尔及利亚<->突尼斯(例如),但输出实际上是阿尔及利亚->突尼斯。

1 个答案:

答案 0 :(得分:0)

这是来自graph.data.frame帮助文件的示例。

actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
                            "Esmeralda"),
                     age=c(48,33,45,34,21),
                     gender=c("F","M","F","M","F"))
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
                               "David", "Esmeralda"),
                        to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
                        same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
                        friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)

产生这些边缘

+ edges from 3d02353 (vertex names):
[1] Bob      ->Alice Cecil    ->Bob   Cecil    ->Alice David    ->Alice David    ->Bob  
[6] Esmeralda->Alice

如您所见,在您的代码中您尚未创建顶点数组,但您要做的是创建两个关系。

特别是在有向图中,如果您确实想知道关系是相反的,则不能采用将所有数据合并到同一行的捷径。

我建议您做的是将每个有向边(从,到)作为单独的行移至长格式,然后将流按适当的方向放入行中。

我还建议使用更具描述性的列名称,例如“ exporter”,“ importer”或“ from”,“ to”,因为import1和import2并不能提供足够的自包含信息来知道它们是什么。

或者,如果您真的想将此表达为与阿尔及利亚的两种不同关系(import_from,export_to),那么您也可以这样做。但是在那种情况下,它将始终显示阿尔及利亚-> x关系