【发布时间】:2017-08-23 17:47:50
【问题描述】:
我在做一些相当简单的事情时遇到了麻烦:在 data.table 中按组应用滚动函数(标准差)。 我的问题是,当我将 data.table 与某个列的 rollapply 一起使用时,data.table 会回收观察结果,如下面的警告消息中所述。我想获得窗口外观察结果的 NA,而不是回收标准差。
这是我目前使用虹膜的方法,以及一个大小为 2 的滚动窗口,向右对齐:
library(zoo)
library(data.table)
A <- iris
setDT(A)
A[,stdev := rollapply(Petal.Width, width = 2, sd, align = 'right', partial = F),by = Species]
Warning messages:
1: In `[.data.table`(A, , `:=`(stdeev, rollapply(Petal.Width, width = 2, :
Supplied 49 items to be assigned to group 1 of size 50 in column 'stdeev' (recycled leaving remainder of 1 items).
2: In `[.data.table`(A, , `:=`(stdeev, rollapply(Petal.Width, width = 2, :
Supplied 49 items to be assigned to group 2 of size 50 in column 'stdeev' (recycled leaving remainder of 1 items).
3: In `[.data.table`(A, , `:=`(stdeev, rollapply(Petal.Width, width = 2, :
Supplied 49 items to be assigned to group 3 of size 50 in column 'stdeev' (recycled leaving remainder of 1 items).
> A
Sepal.Length Sepal.Width Petal.Length Petal.Width Species stdeev stdev
1: 5.1 3.5 1.4 0.2 setosa 0.00000000 0.00000000
2: 4.9 3.0 1.4 0.2 setosa 0.00000000 0.00000000
3: 4.7 3.2 1.3 0.2 setosa 0.00000000 0.00000000
4: 4.6 3.1 1.5 0.2 setosa 0.00000000 0.00000000
5: 5.0 3.6 1.4 0.2 setosa 0.14142136 0.14142136
---
146: 6.7 3.0 5.2 2.3 virginica 0.28284271 0.28284271
147: 6.3 2.5 5.0 1.9 virginica 0.07071068 0.07071068
148: 6.5 3.0 5.2 2.0 virginica 0.21213203 0.21213203
149: 6.2 3.4 5.4 2.3 virginica 0.35355339 0.35355339
150: 5.9 3.0 5.1 1.8 virginica 0.42426407 0.42426407
【问题讨论】:
标签: r data.table zoo