열 중 하나에 ID (고유하지 않은 사용자 식별) (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]로 원하는 요소에 액세스합니다.
원래의 대용량 데이터 프레임이나 심지어 행렬 표현에 적용 할 때, 이것은 내 컴퓨터 (4GB RAM, MacOSX 10.6, R 2.15)를 질식시키고 완료되지 않습니다 (새로운 R 버전이 존재한다는 것을 알고 있지만 이것이 주요 문제는 아니라고 생각합니다. ).
분할이 더 성능이 뛰어나고 오랜 시간이 지난 후에 완료되는 것처럼 보이지만 결과 벡터 목록을 행렬 벡터로 조각하는 방법을 알지 못합니다 (열등한 R 지식).
path = split(smallsampleMat, smallsampleMat[,10])
나는 big.matrix
등 을 사용하는 것을 고려 했지만 많은 성공이 없으면 프로세스 속도가 빨라집니다.
dlply(df, .(userid))
비교가 나쁘다는 것을 알았습니다 !split
require(plyr)