"Kullanıcıların" eylemlerini toplayan 10 sütunlu bir veri çerçevem var, burada sütunlardan biri bir kimlik içeriyor (benzersiz değil, kullanıcıyı tanımlayan) (sütun 10). veri çerçevesinin uzunluğu yaklaşık 750000 satırdır. Tek bir aktörün eylemlerini izole etmek için "kullanıcı" tanımlayıcısını içeren sütuna ayrı ayrı veri çerçevelerini çıkarmaya çalışıyorum (bu nedenle veri çerçevelerinin bir listesini veya vektörünü elde ediyorum).
ID | Data1 | Data2 | ... | UserID
1 | aaa | bbb | ... | u_001
2 | aab | bb2 | ... | u_001
3 | aac | bb3 | ... | u_001
4 | aad | bb4 | ... | u_002
sonuçlanan
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
...)
Aşağıdakiler, küçük bir örnekte (1000 sıra) benim için çok iyi çalışıyor:
paths = by(smallsampleMat, smallsampleMat[,"userID"], function(x) x)
ve sonra örneğin [1] yollarından istediğim öğeye erişiyorum.
Orijinal büyük veri çerçevesine veya hatta bir matris sunumuna uygularken, bu, makinemi (4GB RAM, MacOSX 10.6, R 2.15) boğuyor ve asla tamamlanmıyor (daha yeni bir R sürümünün var olduğunu biliyorum, ancak bunun ana sorun olmadığına inanıyorum ).
Görünüşe göre bölünme daha performanslı ve uzun bir süre sonra tamamlanıyor, ancak elde edilen vektör listesini bir matris vektörüne nasıl parçalayacağımı (daha düşük R bilgisi) bilmiyorum.
path = split(smallsampleMat, smallsampleMat[,10])
Ben de big.matrix
vb kullanmayı düşündüm , ancak süreci hızlandıracak çok fazla başarı olmazsa.
dlply(df, .(userid))
kötü olduğunu gördüm , teşekkür ederim ve OP!split
require(plyr)