次のように、いくつかの値が因子に関連付けられている非常に大きなデータフレームがあります。
value user
12 USER1
4 USER5
6 USER3
50 USER1
2 USER2
1 USER1
8 USER5
9 USER3
55 USER1
15 USER2
各ユーザーの値の最大値と最小値を知りたいです。forループを試してみました。ここでは、一時変数を作成し、ユーザーリストを調べて最大値と最小値を見つけます。ただし、データベースのサイズは非常に大きく(100Mb)、非常に長い時間(30分)かかります。これを行うためのよりスマートな方法はありますか?ありがとう。
dfがdata.frame
「ビッグ」データのオリジナルである場合は、次のdata.table
パッケージを使用することをお勧めします。
library(data.table)
dt = data.table(df)
setkey(dt, user)
dt[,list(min(value), max(value)),by=user]
user V1 V2
1: USER1 1 55
2: USER5 4 8
3: USER3 6 9
4: USER2 2 15
編集:使用する良い例each
からplyr
!
> library(plyr)
> dt[,as.list(each(min,max)(value)),by=user]
user min max
1: USER1 1 55
2: USER5 4 8
3: USER3 6 9
4: USER2 2 15
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加