У меня есть кадр данных с 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, но я считаю, что это не Главная проблема).
Кажется, что split более совершенен и после долгого времени завершается, но я не знаю (низшего знания R), как вырезать результирующий список векторов в вектор матриц.
path = split(smallsampleMat, smallsampleMat[,10])
Я также рассмотрел использование big.matrix
и т.д., но без особого успеха, что ускорит процесс.