1

いくつかのエッジ リストを隣接行列に変換したいと思います。しかし、私はさまざまな問題に直面しています。私のデータ セットは、3 つの瞬間に同点 (重み付けが 1 ~ 5 で、監督) がある場合とない場合がある 27 人の俳優で構成されています。

これは、たとえば、t=1の場合、次のようなエッジ リストがあることを意味します。

countryA,countryB,tie
AUH,GMY,2
AUH,RUS,1
AUH,UKG,4
BOL,PER,5
BRA,ARG,1
PAR,UKG,4

t=2の場合、次のようなエッジ リストがあります。

countryA,countryB,tie
ARG,AUH,1
AUH,UKG,4
BOL,PER,5
BRA,ARG,1
PAR,UKG,4
RUS,UKG,2

問題は、期間ごとに 27x27 のマトリックスが必要なことです。これは、他の誰とも関係のないすべてのアクターもすべての期間に含まれることを意味します。基本的に、3 つのピリオドすべてで次のようなものが必要です (理想的には、コンマがなくなっていることに注意してください)。

0 0 0 3 2 1 4 
0 0 4 2 1 0 0
0 0 0 0 3 4 4 
0 0 0 0 2 1 4 
0 0 4 2 0 0 0
0 0 0 0 3 0 4 
0 3 4 2 0 0 0 

もちろん、さまざまなフォーラムの投稿、ヘルプ サイトなどは確認済みです。しかし、私はこれをどのように行うべきかを理解できませんでした。私はイライラしています。

4

1 に答える 1

1

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

その後、好きなことを行うことができます。一部の観測値が欠落している場合でも、同じ因子レベルを使用してすべてを取得し、同じ次元のテーブルを取得することが重要です。

于 2014-07-10T13:07:20.807 に答える