Podziel dużą ramkę danych na listę ramek danych na podstawie wspólnej wartości w kolumnie

Mam ramkę danych z 10 kolumnami, zbierającą akcje „użytkowników”, gdzie jedna z kolumn zawiera identyfikator (nie unikalny, identyfikujący użytkownika) (kolumna 10). długość ramki danych wynosi około 750000 wierszy. Próbuję wyodrębnić pojedyncze ramki danych (a więc uzyskać listę lub wektor ramek danych) podzielone przez kolumnę zawierającą identyfikator „użytkownika”, aby wyizolować działania pojedynczego aktora.

ID | Data1 | Data2 | ... | UserID
1  | aaa   | bbb   | ... | u_001
2  | aab   | bb2   | ... | u_001
3  | aac   | bb3   | ... | u_001
4  | aad   | bb4   | ... | u_002

w wyniku czego

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
...)

Poniższe działa bardzo dobrze dla mnie na małej próbce (1000 wierszy):

paths = by(smallsampleMat, smallsampleMat[,"userID"], function(x) x)

a na przykład dostęp do elementu, który chcę ścieżkami [1].

Kiedy aplikujesz na oryginalną dużą ramkę danych lub nawet reprezentację macierzową, to dławi moją maszynę (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 nie jest to główny problem ).

Wydaje się, że split 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]) 

Rozważałem również użyciebig.matrix itd., ale bez większego sukcesu, który przyspieszyłby proces.

questionAnswers(2)

yourAnswerToTheQuestion