• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言数据重塑sapply、ddply

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

r语言相关知识

BMAverageDrawDown<-function(Rp,…){
#tmp[tmp<0],即为回撤序列
tmp <- period.apply(Rp,PTTurningPoint(Rp),FUN=function(Rp){min(cumprod(1+Rp)-1)})
-mean(tmp[tmp<0])
}
计算平均回撤率,输入一个xts格式的序列,产生一个值。
period.apply(x, INDEX, FUN, …)将一段序列x根据index分段用函数FUN作用于每一段x。index为每个区间两端的节点。最后得到的序列长度为index-1.

odf <- xts::xts(odf[,c(“RP”,“RM”)],order.by = as.Date(as.character(odfSKDATE),format=&quot;data.framextsxts::xts()library(xts);xts().as.Date201706202017062020170620odfSK_DATE),format=&quot;%Y%m%d&quot;)) 将原来的data.frame数据转化为xts格式,xts::xts()相当于library(xts);xts(). as.Date可以将“20170620”转化为“2017-06-20”的时间格式,注意20170620必须是字符形式。此时用odfRp与转化前odf$Rp是不同的,前者是xts格式,后者不是。

vlist <- ls(envir=.GlobalEnv)
vlist <- sort(vlist[substr(vlist,1,2)==“BM”])
第一个:调用环境中所有出现的变量的名字,包括函数的名字
第二个:substr(vlist,1,2)将vlist字符中第一第二个字符

sapply(vlist,wrapper2,args=list(Rp=Rp,Rm=Rm,Rf=Rf,MAR=MAR,p=p,GEO=GEO))
将wrapper2作用于vlist中所有的元素
sapply是使wrapper2作用于vlist上,arg为wrapper要用到的参数。其中vlist还是一组字符串格式。因为wrapper要求输入参数为函数名。

a <- try(do.call(p_func_name,args=…),silent=TRUE)
do.call(a,args=list(c1,c2,c3))就相当于a(c1),a是函数c1是参数。
简单的时候用a(c1),但是当换了个函数b,他的输入参数为c2时那就很有用了。因为arg不用变,只需要a改为b就可以。
try可以判断将出现错误的程序继续运行,只是将错误报告赋值给另一个变量,注意的是silent=TRUE必须加上就是“保持沉默”,忽略错误,继续运行。

INDICATORS=gsub(“BM”,"",vlist)
将vlist中的BM字符删去
gsub (pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE),将x中的pattern部分替换为replacement

start_time <- as.numeric(format(today()%m-%months(3),"%Y%m%d"))
用lubridate包来处理时间数据,today()是其中的一个函数表示去今天的日期比如会返回”20170620“.
%m-%相当于减号,可以进行时间上的减法,也可以用“-”,但是5月31日减去一个月是4月3
0日,用“-”会返回NA,用%m-%返回的是4月30日。

re <- sapply(as.array(re),"[",1)
re中每个分量只取第一个数。防止某个指标结果有两个一样的。

re_r3m <- ddply(df[dfSKDATE&gt;=starttime,], BKPRODUCT,calcIndicators2)ddply(mydata,c(columnnameofafactortogroupby,columnnameofthesecondfactortogroupby),summarizeORtransform,newcolumn=myfunction(columnname(s)Iwantthefunctiontoactupon))ddply()columnddply()columnfactorcolumnddply()使.(column,column),使 column,columnNULLwith(a,order(c,d))order(aSK_DATE&gt;=start_time,],~BK_PRODUCT,calcIndicators2) 分组对数据进行函数操作 ddply(mydata, c(&#x27;column name of a factor to group by&#x27;, &#x27;column name of the second factor to group by&#x27;), summarize OR transform, newcolumn = myfunction(column name(s) I want the function to act upon)) 函数ddply()的第一个参数是原始数据框名称,第二个参数则是我们打算划分为子集的column名称。第三个参数用于告知ddply()应该返回数据点结果(即总和)还是在整套数据框的新column中根据factor的具体要求显示每行数据点内容。最后,第四项参数用于命名新column并列出我们希望ddply()使用的函数清单。 其中第二个参数可以替换为 .(column,column),如果为一列的话可以使用~column,如我们的原句所示或者“column”,当然其值也可以为NULL这样就可以不分组,对全局运行函数。 with(a,order(-c,d))相当于order(-ac,a$d),其中order(-c)表示对c从大到小排序。
10.
数据重塑reshape2,melt,dcast
companiesLong <- melt(companiesData, id.vars=c(“fy”, “company”),
measure.vars=c(“revenue”, “profit”, “margin”),
variable.name=“financialCategory”, value.name=“amount”)
数据由

变为

companiesWide <- dcast(companiesLong, fy + company ~ financialCategory, value.var=“amount”)
此程序数据就又会变回去。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SQL Server 2016 CTP3 集成R语言安装配置手册发布时间:2022-07-18
下一篇:
R语言解读多元线性回归模型发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap