data.table ifelse .N得到NA

时间:2017-05-11 07:12:59

标签: r data.table

>stk.dquote[, .(SecuCode, TradingDay, ChangePCT)]
    SecuCode TradingDay ChangePCT
 1:   000001 2013-07-25   0.00511
 2:   000002 2013-07-25  -0.00943
 3:   000004 2013-07-25  -0.02275
 4:   000005 2013-07-25   0.00447
 5:   000006 2013-07-25  -0.00487
---                              
790536:   603699 2014-11-11  -0.04537
790537:   603766 2014-11-11  -0.08306
790538:   603806 2014-11-11  -0.03491
790539:   603988 2014-11-11   0.09540
790540:   603993 2014-11-11   0.02569


> stk.dquote[, .N, by=SecuCode]
    SecuCode   N
  1:   000001 316
  2:   000002 316
  3:   000004 316
  4:   000005 316
  5:   000006 316
 ---             
2568:   603988   6
2569:   601015   5
2570:   603019   4
2571:   603011   3
2572:   603088   1

此data.table中的某些SecuCode的数量小于21,所以我使用ifelse 在数量超过21的SecuCode上进行一些计算。

stk.dquote[, Momentum_1M := ifelse(.N > 21, rollsum(ChangePCT, 21, fill = NA, align = "right"), as.numeric(NA)), by=SecuCode]

但不行,结果全是NA,我怎么能这样做,任何帮助都会非常感激..

0 个答案:

没有答案