在F

时间:2016-04-26 12:34:39

标签: r sorting

我有一个矩阵,其中包含大约1000家公司的月度股票回报超过16年,另一个矩阵包含公司的年度规模衡量标准,以及第三个矩阵,其中包含相同公司的年度账面净值与市场权益。所以对于每一只股票,我有192个回报观察,12个尺寸观察和12个市场观察。矩阵按此命令:

 U:APC(P#T) U:AR(P#T)   U:APA(P#T)  89589Q(P#T)
   0.05         0.03        -0.2         0.11
   0.02         0.0l2       -0.1         0.12
   0.01         0.013        0           0.02
    ...         ...         ...          ....

我想将数据分类为Fama French 2015投资组合。 首先,我想对大小变量的股票进行排序。我想在时间t使用大小来将第t年的所有股票分类为五分之一。一旦完成这一点,我希望将每一组股票按照市场(时间t-1)排序,进入五分位数。一旦分类,应该有25组股票(每个大小组为5个/组),现在我想取这些组的平均值(每个月平均一次)。我想每年重新排序一次,以便最终得到一份包含192个月的25个投资组合的清单,每年由不同的股票组成。我怎么能在R中这样做?我是R的新手。

这里有一个类似的问题: Nested double sort in Matlab

然而,它与Matlab有关。

1 个答案:

答案 0 :(得分:1)

基于data.table(来自Matt Dowle和Co的图书馆)提出问题的几种可能的通用方法之一可以如下:

  1. 使用as.data.table将您的data.frame(例如DF1,DF2,DF3)转换为DT1,DT2,DT3
  2. 定义DT的列类型(您有日期和数字类型)
  3. 合并DT调用新表bigDT
  4. 定义排序顺序

    sortBy <- c('companySize','otherVariable1','otherVariable2')
    sortType <- c(1,1,-1) # 1 for ascending, -1 for descending
    setorderv(bigDT,sortBy,sortType)