提高大数据集的应用速度

时间:2014-10-22 15:17:44

标签: r performance plyr

您好,我试着加快ddly功能。

这是我使用的(大)数据集:

df<-data.frame(code_client=as.factor(sample(177563:(1013643+177563),810805,T)),annee=sample(c(2012,2013),810805,T))

首先尝试:

system.time(ca_annee1<- ddply(.data = df, 
                .variables = .(code_client,annee), 
                .fun=nrow,
                .progress = progress_text(char = ".")))

# user   system  elapsed 
# 1439.278    1.774 1441.876 

它真的很慢,我只想计算clode_client和annee之间的每个组合。

我试图使用我的4个核心:

library(doSNOW)
registerDoSNOW(makeCluster(4, type = "SOCK"))
system.time(ca_annee2<- ddply(.data = df, 
                             .variables = .(code_client,annee), 
                             .fun=nrow,
                             .parallel=TRUE))
#user   system  elapsed 
#2054.860   13.618 2080.125

Tt的速度更慢,为什么? (我的核心在计算期间全部为100%)

无论如何,我找到了一种更快速(非常即时)的方法:

ca2013<-data.frame(nombre_visite=summary(subset(df,annee==2013)$code_client,maxsum=9e9))
ca2013$code_client<-rownames(ca2013)
ca2013$annee<-2013
ca2012<-data.frame(nombre_visite=summary(subset(df,annee==2013)$code_client,maxsum=9e9))
ca2012$code_client<-rownames(ca2012)
ca2012$annee<-2012
ca_annee3<-rbind(ca2012,ca2013)

但我想找到一种方法来使用ddply(或agregate,或者通过或应用wathever),因为摘要技巧在其他情况下不会正常。

所以有人理解为什么这个并行方法更慢?有人给我一些提高plyr功能的技巧吗?

此致

0 个答案:

没有答案