使用rollmeanr向数据表添加列

使用rollmeanr向数据表添加列,r,data.table,R,Data.table,我正在尝试将“calc”列添加到下面的数据表中。对于每个mA列,都应该有一个Calc列,它是日志(value/mA) 翻译成一个答案: setDT(mydata)[, paste0('Calc',2:9) := lapply(.SD, function(x) log(value/x)), .SDcols = 3:10][] 给出: date value MA2 MA3 MA4 MA5 MA6 MA7 MA8 MA9 Calc2 Calc3 Calc

我正在尝试将“calc”列添加到下面的数据表中。对于每个mA列,都应该有一个Calc列,它是日志(value/mA)

翻译成一个答案:

setDT(mydata)[, paste0('Calc',2:9) := lapply(.SD, function(x) log(value/x)), .SDcols = 3:10][]
给出:

          date value MA2 MA3 MA4 MA5 MA6 MA7 MA8 MA9      Calc2     Calc3     Calc4     Calc5     Calc6     Calc7     Calc8     Calc9
 1: 2016-01-01     1  NA  NA  NA  NA  NA  NA  NA  NA         NA        NA        NA        NA        NA        NA        NA        NA
 2: 2016-01-02     2 1.5  NA  NA  NA  NA  NA  NA  NA 0.28768207        NA        NA        NA        NA        NA        NA        NA
 3: 2016-01-03     3 2.5   2  NA  NA  NA  NA  NA  NA 0.18232156 0.4054651        NA        NA        NA        NA        NA        NA
 4: 2016-01-04     4 3.5   3 2.5  NA  NA  NA  NA  NA 0.13353139 0.2876821 0.4700036        NA        NA        NA        NA        NA
 5: 2016-01-05     5 4.5   4 3.5   3  NA  NA  NA  NA 0.10536052 0.2231436 0.3566749 0.5108256        NA        NA        NA        NA
 6: 2016-01-06     6 5.5   5 4.5   4 3.5  NA  NA  NA 0.08701138 0.1823216 0.2876821 0.4054651 0.5389965        NA        NA        NA
 7: 2016-01-07     7 6.5   6 5.5   5 4.5   4  NA  NA 0.07410797 0.1541507 0.2411621 0.3364722 0.4418328 0.5596158        NA        NA
 8: 2016-01-08     8 7.5   7 6.5   6 5.5   5 4.5  NA 0.06453852 0.1335314 0.2076394 0.2876821 0.3746934 0.4700036 0.5753641        NA
 9: 2016-01-09     9 8.5   8 7.5   7 6.5   6 5.5   5 0.05715841 0.1177830 0.1823216 0.2513144 0.3254224 0.4054651 0.4924765 0.5877867
10: 2016-01-10    10 9.5   9 8.5   8 7.5   7 6.5   6 0.05129329 0.1053605 0.1625189 0.2231436 0.2876821 0.3566749 0.4307829 0.5108256

.SD是做什么的?@user3022875
.SD
代表“数据子集”。中包含除分组列以外的所有列。如果不希望包含所有剩余列,可以使用
.SDcols
指定应包含在
.SD
中的列。有关更详细的说明,请阅读GitHub上的。
          date value MA2 MA3 MA4 MA5 MA6 MA7 MA8 MA9      Calc2     Calc3     Calc4     Calc5     Calc6     Calc7     Calc8     Calc9
 1: 2016-01-01     1  NA  NA  NA  NA  NA  NA  NA  NA         NA        NA        NA        NA        NA        NA        NA        NA
 2: 2016-01-02     2 1.5  NA  NA  NA  NA  NA  NA  NA 0.28768207        NA        NA        NA        NA        NA        NA        NA
 3: 2016-01-03     3 2.5   2  NA  NA  NA  NA  NA  NA 0.18232156 0.4054651        NA        NA        NA        NA        NA        NA
 4: 2016-01-04     4 3.5   3 2.5  NA  NA  NA  NA  NA 0.13353139 0.2876821 0.4700036        NA        NA        NA        NA        NA
 5: 2016-01-05     5 4.5   4 3.5   3  NA  NA  NA  NA 0.10536052 0.2231436 0.3566749 0.5108256        NA        NA        NA        NA
 6: 2016-01-06     6 5.5   5 4.5   4 3.5  NA  NA  NA 0.08701138 0.1823216 0.2876821 0.4054651 0.5389965        NA        NA        NA
 7: 2016-01-07     7 6.5   6 5.5   5 4.5   4  NA  NA 0.07410797 0.1541507 0.2411621 0.3364722 0.4418328 0.5596158        NA        NA
 8: 2016-01-08     8 7.5   7 6.5   6 5.5   5 4.5  NA 0.06453852 0.1335314 0.2076394 0.2876821 0.3746934 0.4700036 0.5753641        NA
 9: 2016-01-09     9 8.5   8 7.5   7 6.5   6 5.5   5 0.05715841 0.1177830 0.1823216 0.2513144 0.3254224 0.4054651 0.4924765 0.5877867
10: 2016-01-10    10 9.5   9 8.5   8 7.5   7 6.5   6 0.05129329 0.1053605 0.1625189 0.2231436 0.2876821 0.3566749 0.4307829 0.5108256