「ユーザー」のアクションを収集する10列のデータフレームがあり、列の1つにID(一意ではなく、ユーザーを識別する)が含まれています(列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 GB RAM、MacOSX 10.6、R 2.15) を詰まらせ、完了しません (新しい R バージョンが存在することは知っていますが、これは主な問題ではないと思います)。
split の方がパフォーマンスが高く、長い間完了しているようですが、結果のベクトルのリストを行列のベクトルに分割する方法がわかりません (劣った R の知識)。
path = split(smallsampleMat, smallsampleMat[,10])
etcも使用することを検討big.matrix
しましたが、プロセスをスピードアップするほどの成功はありませんでした。