0

これは私を夢中にさせています。毎月の在庫データを含む大きな data.table があります。毎年 6 月に、会計変数に基づいて、すべての株式を 10 のポートフォリオの 1 つに割り当てます。割り当てられたポートフォリオ変数を次の 11 か月に繰り越して、来年 6 月に各株式が新しいポートフォリオ 1 から 10 に割り当てられるまで続けたいと思います。na.locf基本的に私が探しているものですが、2つの問題が発生しています:

  1. 一部の銘柄は、翌年の十分な会計データが不足しているため、その年のポートフォリオに割り当てるべきではありません (つまり、ポートフォリオ変数は NA のままにする必要があります)。もちろんna.locf、ポートフォリオ番号は新しい番号が出るまで繰り越されます。
  2. 一部の銘柄は、たとえば 3 か月後に上場廃止になる可能性があるため、11 か月分のデータがありません。

そのため、最後の観測を来年 6 月 (新しいポートフォリオ番号があるとき) まで最大 11 回繰り越すコードを探しています。

これがna.locf現在の 2 つの問題の解決策です (PERMNO は株式識別子です)。

COMPUSTAT_CRSP_IBES1[,
                     Portfolio_Monthly := na.locf(Portfolio_Monthly, 
                                                  na.rm = FALSE),
                     by = PERMNO]

使用しようとしましrepたが、まったく機能しませんでした:

COMPUSTAT_CRSP_IBES1[,
                     Portfolio_Monthly := if_else(!is.na(Portfolio_Monthly), 
                                                  rep(Portfolio_Monthly, 11), 
                                                  NA), 
                     by = PERMNO]

ヒントをありがとう!

4

1 に答える 1