次のデータ フレームがあります。これを DF と呼びます。これは、「チャンク」、「名前」、および「頻度」の 3 つのベクトルで構成されるデータ フレームです。名前が同じチャンクに存在する場合、名前が隣接していると見なされる NameXName 隣接行列に変換する必要があります。たとえば、最初の行では、Gretel と Friedrich はどちらも Chunk2 にあるため、隣接しています。そして、関係の重みは「頻度」に基づいている必要があります。正確には、同じチャンクに共存する回数です。したがって、グレーテル/フリードリッヒの例では、頻度(グレーテル)+頻度(フリードリッヒ)-1 = 5
Chunk Name Frequency
1 2 Gretel 2
2 2 Pollock 1
3 2 Adorno 1
4 2 Friedrich 4
5 3 Max 1
6 3 Horkheimer 1
7 3 Adorno 1
8 4 Friedrich 5
9 4 Pollock 1
10 4 March 1
11 5 Comte 3
12 7 Jaspers 1
13 7 Huxley 2
14 8 Nietzsche 1
15 8 Sade 2
16 8 Felix 1
17 8 Weil 1
18 8 Western 1
19 8 Lowenthal 1
20 8 Kant 1
21 8 Hitler 1
私は DF$Chunk に従ってデータ フレームを分割することで、これをクラックし始めました。
> DF.split<-split(DF, DF$Chunk)
$`2`
Chunk Name Frequency
1 2 Gretel 2
2 2 Pollock 1
3 2 Adorno 1
4 2 Friedrich 4
$`3`
Chunk Name Frequency
5 3 Max 1
6 3 Horkheimer 1
7 3 Adorno 1
$`4`
Chunk Name Frequency
8 4 Friedrich 5
9 4 Pollock 1
10 4 March 1
近づいたと思いましたが、実行可能なデータフレームに戻すのに苦労しているリストアイテムを返します。
また、これを ChunkXName 隣接行列に変換することから始めようとしました。
> chunkbyname<-tapply(DF$Frequency , list(DF$Name,DF$Chunk) , as.character )
NAmeXName行列を取得するためにchunkbynameにその転置を掛けることを期待していますが、これは行列が疎または複雑すぎるようです( %*% b のエラー:数値/複素行列/ベクトル引数が必要です)。
このデータフレームを隣接行列に入れるのを手伝ってください。