首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PerformanceAnalytics数到百分比

PerformanceAnalytics数到百分比
EN

Stack Overflow用户
提问于 2014-11-19 09:32:51
回答 2查看 1K关注 0票数 1

我想知道是否有可能使这个R包中的表输出为%而不是数字。

代码语言:javascript
复制
table.AnnualizedReturns(indOver, Rf=0)

                          SP500  
Annualized Return         0.0732
Annualized Std Dev        0.1951
Annualized Sharpe (Rf=0%) 0.3752

所以第一个0.0732我想看到的是0.07%

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 10:04:19

该函数的返回值是一个数据帧,因此问题是如何用百分比符号打印数据帧的列。

可复制的例子如下。

代码语言:javascript
复制
> require(PerformanceAnalytics)
> data(managers)
> tb =      table.AnnualizedReturns(managers[,1],Rf=0)
> tb
                            HAM1
Annualized Return         0.1375
Annualized Std Dev        0.0888
Annualized Sharpe (Rf=0%) 1.5491

现在,我们定义了一个新的类和一个使用百分比符号显示的格式函数:

代码语言:javascript
复制
> format.pc = function(x,...){sprintf('%0.2f%%',x)}
> class(tb[,1])="pc"

现在,就像用魔法:

代码语言:javascript
复制
> tb
                           HAM1
Annualized Return         0.14%
Annualized Std Dev        0.09%
Annualized Sharpe (Rf=0%) 1.55%

基本值未被更改:

代码语言:javascript
复制
> tb[,1]
[1] 0.1375 0.0888 1.5491
attr(,"class")
[1] "pc"

它们就在这个新类的向量中。

票数 3
EN

Stack Overflow用户

发布于 2014-11-19 09:41:48

正确格式化字符串的一种方法是:

代码语言:javascript
复制
sprintf('%0.2f%%', 0.0567)    # Note I use %% to get a percent sign in the output
[1] "0.06%"

让它在table.AnnualizedReturns中工作将意味着编辑代码。你可以做一个副本,并根据你的意愿编辑代码。或者,您可以与包含此函数的包的编写方联系,并提出更改建议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27013290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档