@@ -755,3 +755,98 @@ test_that("no dplyr warnings from selecting multiple columns", {
755
755
)
756
756
expect_equal(multi_slid_select , multi_slid )
757
757
})
758
+
759
+ test_that(" epi_slide_opt output naming features" , {
760
+ multi_columns <- dplyr :: bind_rows(
761
+ dplyr :: tibble(geo_value = " ak" , time_value = test_date + 1 : 200 , value = 1 : 200 , value2 = - 1 : - 200 ),
762
+ dplyr :: tibble(geo_value = " al" , time_value = test_date + 1 : 5 , value = - (1 : 5 ), value2 = 1 : 5 )
763
+ ) %> %
764
+ as_epi_df() %> %
765
+ group_by(geo_value )
766
+ multi_columns_weekly <- dplyr :: bind_rows(
767
+ dplyr :: tibble(geo_value = " ak" , time_value = test_date + 7 * (1 : 200 ), value = 1 : 200 , value2 = - 1 : - 200 ),
768
+ dplyr :: tibble(geo_value = " al" , time_value = test_date + 7 * (1 : 5 ), value = - (1 : 5 ), value2 = 1 : 5 )
769
+ ) %> %
770
+ as_epi_df() %> %
771
+ group_by(geo_value )
772
+ yearmonthly <-
773
+ tibble :: tibble(
774
+ geo_value = 1 ,
775
+ time_value = tsibble :: make_yearmonth(2000 , 1 ) + 1 : 30 - 1 ,
776
+ value = 1 : 30 %% 2 == 0
777
+ ) %> %
778
+ as_epi_df() %> %
779
+ group_by(geo_value )
780
+
781
+ # Auto-naming:
782
+ # * Changing .f and .window_size:
783
+ expect_equal(
784
+ multi_columns %> % epi_slide_opt(value2 , frollmean , .window_size = 14 ) %> % names(),
785
+ c(names(multi_columns ), " value2_14dav" )
786
+ )
787
+ expect_equal(
788
+ multi_columns %> % epi_slide_opt(value2 , slide_mean , .window_size = as.difftime(14 , units = " days" )) %> % names(),
789
+ c(names(multi_columns ), " value2_14dav" )
790
+ )
791
+ expect_equal(
792
+ multi_columns %> % epi_slide_opt(value2 , slide_sum , .window_size = Inf ) %> % names(),
793
+ c(names(multi_columns ), " value2_running_sum" )
794
+ )
795
+ # * Changing .f and .align:
796
+ expect_equal(
797
+ multi_columns %> % epi_slide_opt(value2 , slide_min , .window_size = 14 , .align = " center" ) %> % names(),
798
+ c(names(multi_columns ), " value2_14dcmin" )
799
+ )
800
+ expect_equal(
801
+ multi_columns %> % epi_slide_opt(value2 , slide_max , .window_size = 14 , .align = " left" ) %> % names(),
802
+ c(names(multi_columns ), " value2_14dlmax" )
803
+ )
804
+ # * Changing .f, time_type(, .window_size):
805
+ expect_equal(
806
+ multi_columns_weekly %> % epi_slide_opt(value2 , slide_prod , .window_size = as.difftime(2 , units = " weeks" )) %> % names(),
807
+ c(names(multi_columns_weekly ), " value2_2wprod" )
808
+ )
809
+ expect_equal(
810
+ yearmonthly %> % epi_slide_opt(value , slide_any , .window_size = 3 ) %> % names(),
811
+ c(names(yearmonthly ), " value_3many" ) # not the best name, but super unlikely anyway
812
+ )
813
+
814
+ # Manual naming:
815
+ expect_equal(
816
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum , .window_size = 7 , .suffix = " _s{.n}" ) %> % names(),
817
+ c(names(multi_columns ), " value_s7" , " value2_s7" )
818
+ )
819
+ expect_equal(
820
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum , .window_size = 7 , .prefix = " {.f_abbr}_" , .suffix = " _{.n}" ) %> % names(),
821
+ c(names(multi_columns ), " sum_value_7" , " sum_value2_7" )
822
+ )
823
+ expect_equal(
824
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum , .window_size = 7 , .prefix = " slide_value_" ) %> % names(),
825
+ c(names(multi_columns ), " slide_value_value" , " slide_value_value2" )
826
+ )
827
+ expect_equal(
828
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum , .window_size = 7 , .new_col_names = c(" slide_value" , " sv2" )) %> % names(),
829
+ c(names(multi_columns ), " slide_value" , " sv2" )
830
+ )
831
+
832
+ # Validation errors:
833
+ expect_error(
834
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum ,
835
+ .window_size = 7 ,
836
+ .suffix = c(" a" , " b" )
837
+ )
838
+ )
839
+ expect_error(
840
+ multi_columns %> % epi_slide_opt(starts_with(" value" ), slide_sum ,
841
+ .window_size = 7 ,
842
+ .new_col_names = " slide_value"
843
+ )
844
+ )
845
+ expect_error(
846
+ multi_columns %> % epi_slide_opt(value , slide_sum ,
847
+ .window_size = 7 ,
848
+ .prefix = " a" , .suffix = " b" , .new_col_names = " slide_value"
849
+ ),
850
+ class = " epiprocess__epi_slide_opt_incompatible_naming_args"
851
+ )
852
+ })
0 commit comments