r之计算非收费算法来查找变量的最小值和最大值 wrt r 在大数据帧中的一个因素

yxwkf 阅读:97 2024-09-07 23:24:14 评论:0

我有一个非常大的数据框,其中一些值与一个因素相关联,如下所示:

value      user 
12         USER1 
4          USER5 
6          USER3 
50         USER1 
2          USER2 
1          USER1 
8          USER5 
9          USER3 
55         USER1 
15         USER2 

我想找出每个用户值(value)的最大值和最小值。我尝试使用 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 

编辑:使用 plyr 中的 each 的好例子!

> 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 


标签:大数据
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号