Разделить большой фрейм данных на список фреймов данных на основе общего значения в столбце

У меня есть фрейм данных с 10 столбцами, собирающий действия «пользователей», где один из столбцов содержит идентификатор (не уникальный, идентифицирующий пользователя) (столбец 10). длина фрейма данных составляет около 750000 строк. Я пытаюсь извлечь отдельные фреймы данных (чтобы получить список или вектор фреймов данных), разделенные столбцом, содержащим идентификатор «пользователя», чтобы изолировать действия одного субъекта.

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

в результате чего в

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

Для небольшой выборки (1000 строк) у меня очень хорошо работает следующее:

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

и затем доступ к элементу, который я хочу, например, путем [1].

При применении к исходному большому кадру данных или даже к матричному представлению это душит мою машину (4 ГБ ОЗУ, MacOSX 10.6, R 2.15) и никогда не завершается (я знаю, что существует более новая версия R, но я считаю, что это не главная проблема ).

Кажется, что разбиение является более производительным и после долгого времени завершается, но я не знаю (уступает R знания), как разделить результирующий список векторов в вектор матриц.

path = split(smallsampleMat, smallsampleMat[,10]) 

Я рассмотрел также использованиеbig.matrix и т.д., но без особого успеха это ускорит процесс.

Ответы на вопрос(2)

Ваш ответ на вопрос