1

次のデータ フレームがあります。これを 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 のエラー:数値/複素行列/ベクトル引数が必要です)。

このデータフレームを隣接行列に入れるのを手伝ってください。

4

1 に答える 1