【问题标题】:Creating matrix from data frame according to external variable根据外部变量从数据框中创建矩阵
【发布时间】:2021-02-25 14:29:44
【问题描述】:

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

【问题讨论】:

  • 题目和链接题不一样吗?

标签: r dplyr transform identity matrix-multiplication


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多