1

我正在使用一个大型的二元数据集来绘制国家之间的关系图。我的目标是用 R 创建一个显示国家之间“外交距离”的情节:他们是朋友还是不是?每个观察都是一个事件,三个变量告诉我我需要知道的内容:Actor1、Actor2 以及它们在四点量表上的行为性质。(关于四点量表的简要说明:1 是友好的,2 是超级友好的,3 是敌对的,4 是超级敌对的。)我的数据看起来像这样:

# Replicate data
C <- c("AFG", "AFR", "AGO", "AIA", "ALB", "ARE", "ARG", "ARM", 
"ASA", "ATG", "AUS", "AUT", "AZE", "BDI", "BEL", "BEN", "BFA", 
"BGD", "BGR", "BHR", "BHS", "BLR", "BLZ", "BMU", "BOL", "BRA", 
"BRB", "BRN", "BTN", "BWA", "CAF", "CAN", "CAS", "CHE", "CHL", 
"CHN", "CIV", "CMR", "COD", "COG", "COK", "COL", "COM", "CPV", 
"CRI", "CUB", "CYM", "CYP", "CZE", "DEU", "DJI", "DMA", "DNK", 
"DOM", "DZA", "EAF", "ECU", "EGY", "ERI", "ESP", "EST", "ETH", 
"EUR", "FIN", "FJI", "FRA", "FSM", "GAB", "GBR", "GEO", "GHA", 
"GIN", "GMB", "GNB", "GNQ", "GRC", "GRD", "GTM", "GUY", "HND", 
"HRV", "HTI", "HUN", "IDN", "IND", "IRL", "IRN", "IRQ", "ISL", 
"ISR", "ITA", "JAM", "JOR", "JPN", "KAZ", "KEN", "KGZ", "KHM", 
"KIR", "KNA", "KOR", "KWT", "LAM", "LAO", "LBN", "LBR", "LBY", 
"LCA", "LIE", "LKA", "LSO", "LTU", "LUX", "LVA", "MAC", "MAR", 
"MCO", "MDA", "MDG", "MDV", "MEA", "MEX", "MHL", "MKD", "MLI", 
"MLT", "MMR", "MNG", "MOZ", "MRT", "MUS", "MWI", "MYS", "NAM", 
"NER", "NGA", "NIC", "NLD", "NMR", "NOR", "NPL", "NRU", "NZL", 
"OMN", "PAK", "PAN", "PER", "PGS", "PHL", "PLW", "PNG", "POL", 
"PRK", "PRT", "PRY", "PSE", "QAT", "ROM", "RUS", "RWA", "SAF", 
"SAS", "SAU", "SDN", "SEA", "SEN", "SGP", "SLB", "SLE", "SLV", 
"SMR", "SOM", "SRB", "STP", "SUR", "SVK", "SWE", "SWZ", "SYC", 
"SYR", "TCD", "TGO", "THA", "TJK", "TKM", "TMP", "TON", "TTO", 
"TUN", "TUR", "TUV", "TZA", "UGA", "UKR", "URY", "USA", "UZB", 
"VAT", "VCT", "VEN", "VNM", "VUT", "WAF", "WSM", "WST", "YEM", 
"ZAF", "ZMB", "ZWE")
ActionClasses <- c(1,2,3,4)

data = data.frame(Actor1=sample(C, size = 1000, replace = TRUE), Actor2=sample(C, size = 1000, replace = TRUE), Action = sample(ActionClasses, size = 1000, replace = T))

首先,我必须绘制关系图,使用以下代码:

Interactions <- function(d) {
  y <- Month[(Month$Actor1CountryCode == d),]

    lapply(C, function(b) {
    z <- y[(y$Actor2CountryCode == b),]

     a <-sapply(1:4, function(Y) {
     sum(z$QuadClass == Y)})
     a <- rbind(a)
    row.names(a) <- paste(d,"v",b, sep = "")
    colnames(a) <- c("VerbCoop", "MatCoop", "VerbConf", "MatConf")
     q <<- rbind(q,a)
    })
  }

注意:此代码允许重复,这是我稍后会修复的。

但是,我不确定我必须如何进行绘图。我希望关系良好的国家(在“VerbCoop”和“MatCoop”上得分如此之高)彼此接近,而关系不佳的国家彼此远离。这应该会产生一个类似集群的地图,相互喜欢的国家组彼此分开。我应该如何处理这个?

4

0 回答 0