我想在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从import2 --> import1将flow1读取为方向,并将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我希望输出是阿尔及利亚< -->突尼斯队(例如),但输出实际上是阿尔及利亚-->突尼斯队。
发布于 2019-05-18 22:05:24
以下是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关系
https://stackoverflow.com/questions/56199274
复制相似问题