- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
r数据了解当中的化整为零(split-apply-combine)策略_光环大数据培训
光环大数据--大数据培训人工智能培训
R 数据分析当中的化整为零(Split-Apply-Combine)策略_光环大数据培训
什么时候我们需要使用到化整为零的策略呢?有以下三种情况:
数据需要分组处理
数据需要按照每行或者每列来处理
数据需要分级处理,和分组很类似,但是分级时需要考虑分级之间的关
系。
化整为零策略有点类似于由 Google 推广的 map-reduce 策略。当然
map-reduce 策略的基础是网格,而这
里的Split-Apply-Combine 的基础完全可以是单机,甚至不支持并行处理的
单机都可以。
然而,化整为零并不是一个很直观的编程过程。最直观的过程是使用 Loop
循环。这里使用一个例子来讲解
一下如何实现化整为零策略。在plyr 包中有数据ozone,它是一个三维矩阵
(24X24X72),其中最后一维72
是指的6 年12 个月每个月的结果。也就是ozone 是一个包括了连续72 个月
24X24 的三维矩阵数据。三维分
别是lat,long,time。我们需要由对时间robust linear model 之后的残基
光环大数据
光环大数据--大数据培训人工智能培训
residuals。
library(plyr) # need for dataset ozone library(MASS) # need for
function rlm month - ordered(rep(1:12, length=72)) #set time sequence
#try one set one - ozone[1,1,] model - rlm(one ~ month - 1);
modelCall:rlm(formula = one ~ month - 1)Converged in 9 iterations
Coefficients: month1 month2 month3 month4 month5 month6
month7 month8 month9 month10 month11 month12 264.3964 259.2036
255.0000 252.0052 258.5089 265.3387 274.0000 276.6724 277.0000 285.0000
283.6036 273.1964 Degrees of freedom: 72 total; 60 residualScale
estimate: 4.45 deseas - resid(model)
现在我们对每一组数据都做相同的处理。首先使用 for loop,这样比较直
观
deseasf - function(value) rlm(value ~ month -1) #the function
models - as.list(rep(NA, 24*24)) #prepare the variable dim(models) -
c(24, 24) deseas - array(NA, c(24,24,72)) #prepare the variable
dimnames(deseas) - dimnames(ozone) for (i in seq_len(24)) { #for loop
for first dimension+ for(j in seq_len(24)) { #for loop for second
dimension+ mod - deseasf(ozone[i, j, ]) #apply function+
models[[i, j]] - mod #save data+ deseas[i, j, ] - resid(mod)
#get residure+ }+ }
接下来我们使用化整为零的策略。因为数据可以分成24X24 块来处理,每一
块都是单独运算,可以并行处
文档评论(0)