R:diff()和tsible-必须是大小n或1,而不是n-2



给定:

test <- tsibble(
date = lubridate::now() + 0:9,
value = rnorm(10)
)  %>%
mutate (vdiff =diff(value, differences = 2))

如何避免以下情况:

错误:mutate()vdiff出现问题。ℹvdiff = diff(value, differences = 2, na.pad = TRUE)。ℹvdiff的大小必须为10或1,而不是8

我尝试添加na.pad = TRUE,但没有效果(无论如何,我更喜欢使用0而不是NA(

实现所需结果的一种方法是使用dplyr::lag。然而,多亏了@MitchellO'Hara-Wild的评论,有一种更简单的方法可以通过简单地使用tsibble::difference来实现这一点

library(tsibble)
library(dplyr)
set.seed(42)
d <- tsibble(
date = lubridate::now() + 0:9,
value = rnorm(10)
)  
#> Using `date` as index variable.
d %>%
mutate(vdiff = difference(value, differences = 2, default = 0))
#> # A tsibble: 10 x 3 [1s] <?>
#>    date                  value  vdiff
#>    <dttm>                <dbl>  <dbl>
#>  1 2021-06-20 14:33:28  1.37    0    
#>  2 2021-06-20 14:33:29 -0.565   0    
#>  3 2021-06-20 14:33:30  0.363   2.86 
#>  4 2021-06-20 14:33:31  0.633  -0.658
#>  5 2021-06-20 14:33:32  0.404  -0.498
#>  6 2021-06-20 14:33:33 -0.106  -0.282
#>  7 2021-06-20 14:33:34  1.51    2.13 
#>  8 2021-06-20 14:33:35 -0.0947 -3.22 
#>  9 2021-06-20 14:33:36  2.02    3.72 
#> 10 2021-06-20 14:33:37 -0.0627 -4.19

相关内容

  • 没有找到相关文章

最新更新