@@ -755,3 +755,98 @@ test_that("no dplyr warnings from selecting multiple columns", {
755755 )
756756 expect_equal(multi_slid_select , multi_slid )
757757})
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