计算非收费算法来查找变量的最小值和最大值 wrt r 在大数据帧中的一个因素?
Computationally non tolling algorithm to find min and max of a variable wrt a factor in r in large data frame?
我有一个非常大的数据框,其中一些值与一个因素相关联,如下所示:
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
for "big" data 建议使用 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
编辑:使用 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
仅使用基础 R:
lapply(split(df$value, df$user), range)
我有一个非常大的数据框,其中一些值与一个因素相关联,如下所示:
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
for "big" data 建议使用 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
编辑:使用 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
仅使用基础 R:
lapply(split(df$value, df$user), range)