data.frames がリストに格納されていると仮定しましょう。ここにいくつかのサンプルデータがあります
t1<-structure(list(countryA = structure(c(1L, 1L, 1L, 2L, 3L, 4L), .Label = c("AUH",
"BOL", "BRA", "PAR"), class = "factor"), countryB = structure(c(2L,
4L, 5L, 3L, 1L, 5L), .Label = c("ARG", "GMY", "PER", "RUS", "UKG"
), class = "factor"), tie = c(2L, 1L, 4L, 5L, 1L, 4L)), .Names = c("countryA",
"countryB", "tie"), class = "data.frame", row.names = c(NA, -6L
))
t2<-structure(list(countryA = structure(1:6, .Label = c("ARG", "AUH",
"BOL", "BRA", "PAR", "RUS"), class = "factor"), countryB = structure(c(2L,
4L, 3L, 1L, 4L, 4L), .Label = c("ARG", "AUH", "PER", "UKG"), class = "factor"),
tie = c(1L, 4L, 5L, 1L, 4L, 2L)), .Names = c("countryA",
"countryB", "tie"), class = "data.frame", row.names = c(NA, -6L
))
tt<-list(t1=t1, t2=t2)
まず、すべての一意の国名のリストを取得する必要があります
countries <- sort(unique(unlist(sapply(tt, function(x) sapply(x[,1:2], levels)))))
ここで、すべての data.frames が国の列に同じ因子水準を使用するようにします。私たちはそれを行うことができます
ttx <- lapply(tt, function(x) {x[,1:2]<-lapply(x[,1:2], factor, levels= countries); x})
彼らはすべての国を認識したので、xtabs
重み付けされたタイ値を持つ隣接行列を作成するために使用できます
lapply(ttx, function(x) xtabs(tie~countryA+countryB, x))
その結果、
$t1
countryB
countryA ARG AUH BOL BRA GMY PAR PER RUS UKG
ARG 0 0 0 0 0 0 0 0 0
AUH 0 0 0 0 2 0 0 1 4
BOL 0 0 0 0 0 0 5 0 0
BRA 1 0 0 0 0 0 0 0 0
GMY 0 0 0 0 0 0 0 0 0
PAR 0 0 0 0 0 0 0 0 4
PER 0 0 0 0 0 0 0 0 0
RUS 0 0 0 0 0 0 0 0 0
UKG 0 0 0 0 0 0 0 0 0
$t2
countryB
countryA ARG AUH BOL BRA GMY PAR PER RUS UKG
ARG 0 1 0 0 0 0 0 0 0
AUH 0 0 0 0 0 0 0 0 4
BOL 0 0 0 0 0 0 5 0 0
BRA 1 0 0 0 0 0 0 0 0
GMY 0 0 0 0 0 0 0 0 0
PAR 0 0 0 0 0 0 0 0 4
PER 0 0 0 0 0 0 0 0 0
RUS 0 0 0 0 0 0 0 0 2
UKG 0 0 0 0 0 0 0 0 0
その後、好きなことを行うことができます。一部の観測値が欠落している場合でも、同じ因子レベルを使用してすべてを取得し、同じ次元のテーブルを取得することが重要です。