我正在使用一个大型的二元数据集来描绘国家之间的关系。我的目标是创建一个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”的得分如此高)彼此接近,彼此之间的关系不好。这应该会产生一个类似群集的地图,彼此相似的国家群体彼此分开。我该怎么做呢?