Mam ramkę danych z 10 kolumnami, zbierającą akcje "użytkowników", gdzie jedna z kolumn zawiera identyfikator (nie jest to unikalny, identyfikujący użytkownika) (kolumna 10). długość ramki danych wynosi około 750000 wierszy. Próbuję wyodrębnić pojedynczych ramek danych (więc uzyskanie listy lub wektor ramek danych) podzielone przez kolumnę zawierającą identyfikator "użytkownika", aby wyizolować działania pojedynczego aktora.Podziel dużą ramkę danych na listę ramek danych na podstawie wspólnej wartości w kolumnie
ID | Data1 | Data2 | ... | UserID
1 | aaa | bbb | ... | u_001
2 | aab | bb2 | ... | u_001
3 | aac | bb3 | ... | u_001
4 | aad | bb4 | ... | u_002
prowadzące do
list(
ID | Data1 | Data2 | ... | UserID
1 | aaa | bbb | ... | u_001
2 | aab | bb2 | ... | u_001
3 | aac | bb3 | ... | u_001
,
4 | aad | bb4 | ... | u_002
...)
następujące prace bardzo dobrze dla mnie na małej próbce (1000 wierszy):
paths = by(smallsampleMat, smallsampleMat[,"userID"], function(x) x)
a następnie dostęp do 1 elementu chcę ścieżkami [ ] na przykład.
Podczas nakładania na oryginalną dużą ramkę danych lub nawet na matrycę, dławi mój komputer (4 GB RAM, MacOSX 10.6, R 2.15) i nigdy się nie kończy (wiem, że istnieje nowsza wersja R, ale uważam, że to jest nie główny problem).
Wygląda na to, że podział jest bardziej wydajny i po długim czasie się kończy, ale nie wiem (gorsza wiedza R), jak podzielić wynikową listę wektorów na wektor macierzy.
path = split(smallsampleMat, smallsampleMat[,10])
Mam również uważane za pomocą big.matrix
itp, ale bez większych sukcesów, które przyspieszają ten proces.
Zastanawiałem wydajność 'dlply (DF,.(userid)) 'i stwierdził, że jest zły w porównaniu do' split' nawet bez angażowania czasu wykonywania 'require (plyr)', dziękuję i OP! – Francis