Próbuję rozwiązać problem macierzy współwystępowania. Mam plik danych transakcji i przedmiotów i chcę zobaczyć matrycę liczby transakcji, w których elementy pojawiają się razem.Tworzenie macierzy współwystępowania
Jestem początkującym programistą w języku R i dobrze się bawię, znajdując wszystkie skróty, które R ma, zamiast tworzyć specjalne pętle (używałem C lat temu i trzymałem się jedynie makr Excela i SPSS). Sprawdziłem tutaj rozwiązania, ale nie znalazłem takiego, który działa (najbliższe jest to rozwiązanie podane tutaj: Co-occurrence matrix using SAC? - ale wygenerowało komunikat o błędzie, gdy użyłem projecting_tm, podejrzewałem, że proces cbind nie powiódł się w moim przypadku.
Zasadniczo mam tabelę zawierającą następujące elementy:
TrxID Items Quant
Trx1 A 3
Trx1 B 1
Trx1 C 1
Trx2 E 3
Trx2 B 1
Trx3 B 1
Trx3 C 4
Trx4 D 1
Trx4 E 1
Trx4 A 1
Trx5 F 5
Trx5 B 3
Trx5 C 2
Trx5 D 1, etc.
chcę stworzyć coś takiego:
A B C D E F
A 0 1 1 0 1 1
B 1 0 3 1 1 0
C 1 3 0 1 0 0
D 1 1 1 0 1 1
E 1 1 0 1 0 0
F 0 1 1 1 0 0
co zrobiłem było (i można by prawdopodobnie śmiać się z moim podejściem debiutanckim R):
library(igraph)
library(tnet)
trx <- read.table("FileName.txt", header=TRUE)
transID <- t(trx[1])
items <- t(trx[2])
id_item <- cbind(items,transID)
item_item <- projecting_tm(id_item, method="sum")
item_item <- tnet_igraph(item_item,type="weighted one-mode tnet")
item_matrix <-get.adjacency(item_item,attr="weight")
item_matrix
Jak wspomniano powyżej, proces cbind prawdopodobnie zakończył się niepowodzeniem, więc projecting_tm nie dał mi żadnego wyniku.
Jakieś alternatywne podejście lub korekta mojej metody?
Twoja pomoc byłaby bardzo cenna!
Powiązany wątek [tutaj] (http://stackoverflow.com/questions/14332233/using-graph-adjacency-in-r). – hhh
Mam do czynienia z podobnymi danymi dotyczącymi transakcji teraz i chciałem tylko podziękować @jacatra (i powiązany wątek wysłany przez hhh jest również bardzo pomocny) – EconomiCurtis
jest mały błąd w przykładzie tego, co chcesz stworzyć - B wiersz i kolumna F mówi 0. powinno powiedzieć 1. Pomylić mnie przez jakiś czas. – vagabond