我有一个非常大的数据框,其中某些值与某个因素相关联,如下所示:
value user
12 USER1
4 USER5
6 USER3
50 USER1
2 USER2
1 USER1
8 USER5
9 USER3
55 USER1
15 USER2
我想找出每个用户的值的最大值和最小值。我尝试了for循环,在其中创建了一个temp变量,并在其中找到了用户列表中的max和min。但是,数据库的大小很大(100Mb),并且要花费很长时间(30分钟)。有更聪明的方法吗?谢谢。
如果df是data.frame
“大”数据的原始格式,建议使用data.table
package:
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] 删除。
我来说两句