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