【问题标题】:R How to use "sort" function at "period.apply"?R如何在“period.apply”中使用“排序”功能?
【发布时间】:2018-07-11 20:36:39
【问题描述】:

我想按每年的降序(从最大值到最小值)对我的时间序列进行排序。

  1. 第一次,我将“排序”功能与“应用”一起应用,在这里它可以工作,但所有日期都是混合的。

    library(xts) 
    library(PerformanceAnalytics)
    
    data(edhec) 
    head(edhec)
    
    edhec_4yr <- edhec["1997/2001"] 
    ep <- endpoints(edhec_4yr, "year")
    
    # "sort" function with apply Ok 
    s.ap=apply(edhec_4yr[,1],2,sort,decreasing = TRUE)
    s.ap
    

为了分隔每年的值的降序,我尝试使用“period.apply”应用“排序”函数,但它只给出每年的第一个值(最大值)!

我的目标是获取所有数据,但只是按每年的降序排列。

>  #"sort" with period.apply (Juste the first value for each year!
> Why!!!!)
>     
>     s.per.ap=period.apply(edhec_4yr[,1], INDEX = ep, function(x) apply(x,2,sort,decreasing = TRUE))
>     s.per.ap

确实,我想要这个:

    Convertible Arbitrage
1997-06 0.0212
1997-07 0.0193
1997-05 0.0156
1997-08 0.0134
1997-02 0.0123
1997-09 0.0122
1997-01 0.0119
1997-10 0.0100
1997-04 0.0086
1997-03 0.0078
1997-12 0.0068
1997-11 0.0000

1998-11 0.0269
1998-02 0.0146
1998-01 0.0145
1998-03 0.0144
1998-04 0.0126
1998-12 0.0113
1998-07 0.0060
1998-05 0.0056
1998-06 -0.0006
1998-09 -0.0196
1998-10 -0.0214
1998-08 -0.0319
......

你能帮我如何用“period.apply”改进我的功能吗!

谢谢

【问题讨论】:

  • 最好能解释一下为什么要这样做。否则这很可能是XY problem

标签: r function statistics apply xts


【解决方案1】:

sortperiod.apply() 一起使用不会只返回第一个值。它返回一个 xts,其中每年一行,每月一列,列按降序排序。

R> period.apply(edhec_4yr[,1], ep, function(x) apply(x,2,sort,decreasing = TRUE))
             [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
1997-12-31 0.0212 0.0193 0.0156 0.0134 0.0123 0.0122
1998-12-31 0.0269 0.0146 0.0145 0.0144 0.0126 0.0113
1999-12-31 0.0243 0.0219 0.0166 0.0140 0.0136 0.0124
2000-12-31 0.0267 0.0243 0.0227 0.0223 0.0179 0.0162
2001-12-31 0.0344 0.0182 0.0162 0.0157 0.0142 0.0117
             [,7]   [,8]    [,9]   [,10]   [,11]   [,12]
1997-12-31 0.0119 0.0100  0.0086  0.0078  0.0068  0.0000
1998-12-31 0.0060 0.0056 -0.0006 -0.0196 -0.0214 -0.0319
1999-12-31 0.0102 0.0101  0.0096  0.0082  0.0048  0.0045
2000-12-31 0.0149 0.0141  0.0093  0.0052 -0.0002 -0.0081
2001-12-31 0.0091 0.0080  0.0078  0.0033  0.0012 -0.0094

您想要的示例输出不能是 xts/zoo 对象,因为 xts/zoo 对象必须具有有序索引。

【讨论】:

  • 感谢 Joshua Ulrich 的回复。我的目标是每年提取十 (10) 个较低的参数值。我想对每年的参数值进行降序排列,然后用函数“tail”提取最后十个值。但是使用“period.apply”的“排序”功能不适用于长时间序列(40 年)。有任何想法如何用其他方式解决这个问题。再次感谢
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多