r语言 - 根据外部变量从数据帧生成矩阵



我正在尝试创建一个简单的国家身份矩阵,以及它们是否彼此接壤。这个想法是有一个大的矩阵,其中变量是国家的名称,如果它们共享边界,它们要么被赋予1,要么被赋予0。

例如,给定这个数据集:

mydata <- fread( "country    border
Afghanistan     China        
Afghanistan     Iran        
Afghanistan     Pakistan       
Afghanistan     Tajikistan      
Afghanistan     Turkmenistan      
Afghanistan     Uzbekistan        
Aland_Islands   NA                 
Albania         Greece
Albania         Montenegro
Albania         North_Macedonia
Albania         Serbia
Algeria         Libya
Algeria         Mali
Algeria         Mauritania
Algeria         Morocco
Algeria         Niger
Algeria         Tunisia")

我想创建如下内容:

mydata <- fread( "Country Afghanistan China Iran Pakistan Tajikistan Turkmenistan Uzbekistan Greece Albania Montenegro
Afghanistan 0 1 1 1 1 1 1 0 0 0
China 1 0 0 0 0 0 0 0 0 0
Iran 1 0 0 1 0 1 0 0 0 0  
Pakistan 1 1 1 0 0 0 0 0 0 0       
")
Country     Afghanistan China Iran Pakistan Tajikistan Turkmenistan Uzbekistan Greece Albania Montenegro
Afghanistan           0     1    1        1          1            1          1      0       0          0
China           1     0    0        0          0            0          0      0       0          0
Iran           1     0    0        1          0            1          0      0       0          0
Pakistan           1     1    1        0          0            0          0      0       0          0

由于您的数据已经具有data.table,请尝试将其转换为宽度,使用'长度'作为聚合函数,并使用0填充缺失的组合。

dcast( mydata, country ~ border, fun.aggregate = length, fill = 0 )

最新更新