tests/testthat/test-output.R

context("print")

mt <- mtcars
mt$cyl <- as.factor(mt$cyl)
mt$vs <- as.factor(mt$vs)

test_that("output from print_cross matches expected output", {
  k <- ds_cross_table(mt, cyl, vs)
  pim <- "    Cell Contents
|---------------|
|     Frequency |
|       Percent |
|       Row Pct |
|       Col Pct |
|---------------|
Total Observations:  32
-------------------------------------------------------------
|              |                     vs                     |
-------------------------------------------------------------
|          cyl |            0 |            1 |    Row Total |
-------------------------------------------------------------
|            4 |            1 |           10 |           11 |
|              |        0.031 |        0.312 |              |
|              |         0.09 |         0.91 |         0.34 |
|              |         0.06 |         0.71 |              |
-------------------------------------------------------------
|            6 |            3 |            4 |            7 |
|              |        0.094 |        0.125 |              |
|              |         0.43 |         0.57 |         0.22 |
|              |         0.17 |         0.29 |              |
-------------------------------------------------------------
|            8 |           14 |            0 |           14 |
|              |        0.438 |            0 |              |
|              |            1 |            0 |         0.44 |
|              |         0.78 |            0 |              |
-------------------------------------------------------------
| Column Total |           18 |           14 |           32 |
|              |        0.563 |        0.437 |              |
-------------------------------------------------------------"

  expect_output(print_cross(k), pim)
})

test_that("output from print_screener matches expected output", {
  mt <- mtcars
  mt[, c(2, 8:11)] <- lapply(mt[, c(2, 8:11)], factor)
  mt[sample(1:nrow(mt), 12), sample(1:ncol(mt), 6)] <- NA
  k <- ds_screener(mt)
  pim <- "-----------------------------------------------------------------------
|  Column Name  |  Data Type  |  Levels  |  Missing  |  Missing (%)  |
    -----------------------------------------------------------------------
    |      mpg      |   numeric   |    NA     |     0     |       0       |
    |      cyl      |   factor    |   4 6 8   |    12     |     37.5      |
    |     disp      |   numeric   |    NA     |     0     |       0       |
    |      hp       |   numeric   |    NA     |    12     |     37.5      |
    |     drat      |   numeric   |    NA     |     0     |       0       |
    |      wt       |   numeric   |    NA     |     0     |       0       |
    |     qsec      |   numeric   |    NA     |    12     |     37.5      |
    |      vs       |   factor    |    0 1    |    12     |     37.5      |
    |      am       |   factor    |    0 1    |    12     |     37.5      |
    |     gear      |   factor    |   3 4 5   |    12     |     37.5      |
    |     carb      |   factor    |1 2 3 4 6 8|     0     |       0       |
    -----------------------------------------------------------------------

    Overall Missing Values           72
    Percentage of Missing Values     20.45 %
    Rows with Missing Values         12
    Columns With Missing Values      6 "

  expect_output(print_screen(k), pim)
})


test_that("output from print_fcont matches the expected result", {
  k <- ds_freq_table(mtcars, mpg)
  pim <- "                              Variable: mpg
|-----------------------------------------------------------------------|
|    Bins     | Frequency | Cum Frequency |   Percent    | Cum Percent  |
|-----------------------------------------------------------------------|
| 10.4 - 15.1 |     6     |       6       |    18.75     |    18.75     |
|-----------------------------------------------------------------------|
| 15.1 - 19.8 |    12     |      18       |     37.5     |    56.25     |
|-----------------------------------------------------------------------|
| 19.8 - 24.5 |     8     |      26       |      25      |    81.25     |
|-----------------------------------------------------------------------|
| 24.5 - 29.2 |     2     |      28       |     6.25     |     87.5     |
|-----------------------------------------------------------------------|
| 29.2 - 33.9 |     4     |      32       |     12.5     |     100      |
|-----------------------------------------------------------------------|"

  expect_output(print_fcont(k), pim)
})

test_that("output from print_fcont is as expected when data has missing values", {
  mt <- mtcarz
  mt$mpg[c(3, 10, 14, 19)] <- NA
  k <- ds_freq_table(mtcars, mpg)
  pim <- "                              Variable: mpg                               
|-----------------------------------------------------------------------|
|    Bins     | Frequency | Cum Frequency |   Percent    | Cum Percent  |
|-----------------------------------------------------------------------|
| 10.4 - 15.1 |     6     |       6       |    21.43     |    21.43     |
|-----------------------------------------------------------------------|
| 15.1 - 19.8 |    10     |      16       |    35.71     |    57.14     |
|-----------------------------------------------------------------------|
| 19.8 - 24.5 |     7     |      23       |      25      |    82.14     |
|-----------------------------------------------------------------------|
| 24.5 - 29.2 |     2     |      25       |     7.14     |    89.29     |
|-----------------------------------------------------------------------|
| 29.2 - 33.9 |     3     |      28       |    10.71     |     100      |
|-----------------------------------------------------------------------|
|   Missing   |     4     |       -       |    12.50     |      -       |
|-----------------------------------------------------------------------|
|    Total    |    32     |       -       |    100.00    |      -       |
|-----------------------------------------------------------------------|"

  expect_output(print_fcont(k), pim)
})


test_that("output from freq_table matches the expected result", {
  k <- ds_freq_table(mt, cyl)
  pim <- "                               Variable: cyl)
|--------------------------------------------------------------------------|
    |                                Cumulative                    Cumulative  |
    |    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
    |--------------------------------------------------------------------------|
    |       4      |       7      |       7      |      35      |      35      |
    |--------------------------------------------------------------------------|
    |       6      |       4      |      11      |      20      |      55      |
    |--------------------------------------------------------------------------|
    |       8      |       9      |      20      |      45      |      100     |
    |--------------------------------------------------------------------------|
    "
  expect_output(print_ftable(k), pim)
})

test_that("output from freq_table is as expected when data has missing values", {
  mt <- mtcarz
  mt$cyl[c(3, 10, 14, 19)] <- NA
  k <- ds_freq_table(mt, cyl)
  pim <- "                             Variable: cyl                              
-----------------------------------------------------------------------
Levels     Frequency    Cum Frequency       Percent        Cum Percent  
-----------------------------------------------------------------------
   4           9              9              32.14            32.14    
-----------------------------------------------------------------------
   6           6             15              21.43            53.57    
-----------------------------------------------------------------------
   8          13             28              46.43             100     
-----------------------------------------------------------------------
Missing        4              -                    -      
-----------------------------------------------------------------------
 Total        32              -             100.00              -      
-----------------------------------------------------------------------"
  expect_output(print_ftable(k), pim)
})


test_that("output from group_summary matches the expected result", {
  k <- ds_group_summary(mt, cyl, mpg)
  pim <- "                                       mpg by cyl
-----------------------------------------------------------------------------------------
|     Statistic/Levels|                    4|                    6|                    8|
-----------------------------------------------------------------------------------------
|                  Obs|                   11|                    7|                   14|
|              Maximum|                 21.4|                 17.8|                 10.4|
|              Minimum|                 33.9|                 21.4|                 19.2|
|                 Mean|                26.66|                19.74|                 15.1|
|               Median|                   26|                 19.7|                 15.2|
|                 Mode|                 22.8|                   21|                 10.4|
|       Std. Deviation|                 4.51|                 1.45|                 2.56|
|             Variance|                20.34|                 2.11|                 6.55|
|             Skewness|                 0.35|                -0.26|                -0.46|
|             Kurtosis|                -1.43|                -1.83|                 0.33|
|       Uncorrected SS|              8023.83|              2741.14|              3277.34|
|         Corrected SS|               203.39|                12.68|                 85.2|
|      Coeff Variation|                16.91|                 7.36|                16.95|
|      Std. Error Mean|                 1.36|                 0.55|                 0.68|
|                Range|                 12.5|                  3.6|                  8.8|
|  Interquartile Range|                  7.6|                 2.35|                 1.85|
-----------------------------------------------------------------------------------------"

  expect_output(print_group(k), pim)
})


test_that("output from print_ftable2 matches the expected result", {
  mt <- mtcars
  mt[, c(2, 8:11)] <- lapply(mt[, c(2, 8:11)], factor)
  pim <- "                               Variable: cyl
|--------------------------------------------------------------------------|
|                                Cumulative                    Cumulative  |
|    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
|--------------------------------------------------------------------------|
|       4      |      11      |      11      |     34.38    |     34.38    |
|--------------------------------------------------------------------------|
|       6      |       7      |      18      |     21.88    |     56.25    |
|--------------------------------------------------------------------------|
|       8      |      14      |      32      |     43.75    |      100     |
|--------------------------------------------------------------------------|


                                Variable: vs
|--------------------------------------------------------------------------|
|                                Cumulative                    Cumulative  |
|    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
|--------------------------------------------------------------------------|
|       0      |      18      |      18      |     56.25    |     56.25    |
|--------------------------------------------------------------------------|
|       1      |      14      |      32      |     43.75    |      100     |
|--------------------------------------------------------------------------|


                                Variable: am
|--------------------------------------------------------------------------|
|                                Cumulative                    Cumulative  |
|    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
|--------------------------------------------------------------------------|
|       0      |      19      |      19      |     59.38    |     59.38    |
|--------------------------------------------------------------------------|
|       1      |      13      |      32      |     40.62    |      100     |
|--------------------------------------------------------------------------|


                               Variable: gear
|--------------------------------------------------------------------------|
|                                Cumulative                    Cumulative  |
|    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
|--------------------------------------------------------------------------|
|       3      |      15      |      15      |     46.88    |     46.88    |
|--------------------------------------------------------------------------|
|       4      |      12      |      27      |     37.5     |     84.38    |
|--------------------------------------------------------------------------|
|       5      |       5      |      32      |     15.62    |      100     |
|--------------------------------------------------------------------------|


                               Variable: carb
|--------------------------------------------------------------------------|
|                                Cumulative                    Cumulative  |
|    Levels    |  Frequency   |   Frequency  |   Percent    |    Percent   |
|--------------------------------------------------------------------------|
|       1      |       7      |       7      |     21.88    |     21.88    |
|--------------------------------------------------------------------------|
|       2      |      10      |      17      |     31.25    |     53.12    |
|--------------------------------------------------------------------------|
|       3      |       3      |      20      |     9.38     |     62.5     |
|--------------------------------------------------------------------------|
|       4      |      10      |      30      |     31.25    |     93.75    |
|--------------------------------------------------------------------------|
|       6      |       1      |      31      |     3.12     |     96.88    |
|--------------------------------------------------------------------------|
|       8      |       1      |      32      |     3.12     |      100     |
|--------------------------------------------------------------------------|
"
  expect_output(ds_auto_freq_table(mt), pim)
})

test_that("output from ds_auto_freq_table() is as expected when data has missing values", {
  pim <- "                             Variable: cyl                              
-----------------------------------------------------------------------
Levels     Frequency    Cum Frequency       Percent        Cum Percent  
-----------------------------------------------------------------------
   4           9              9              32.14            32.14    
-----------------------------------------------------------------------
   6           6             15              21.43            53.57    
-----------------------------------------------------------------------
   8          13             28              46.43             100     
-----------------------------------------------------------------------
Missing        4              -              12.50              -      
-----------------------------------------------------------------------
 Total        32              -             100.00              -      
-----------------------------------------------------------------------

                            Variable: gear                              
-----------------------------------------------------------------------
Levels     Frequency    Cum Frequency       Percent        Cum Percent  
-----------------------------------------------------------------------
   3          13             13              46.43            46.43    
-----------------------------------------------------------------------
   4          10             23              35.71            82.14    
-----------------------------------------------------------------------
   5           5             28              17.86             100     
-----------------------------------------------------------------------
Missing        4              -              12.50              -      
-----------------------------------------------------------------------
 Total        32              -             100.00              -      
-----------------------------------------------------------------------"

  fdata <- dplyr::select(mtcarz, cyl, gear)
  fdata$cyl[c(3, 10, 14, 19)] <- NA
  fdata$gear[c(3, 8, 17, 24)] <- NA
  expect_output(ds_auto_freq_table(fdata), pim)
})


test_that("output from print_cross2 matches the expected result", {
  mt <- mtcars
  mt[, c(2, 8, 9)] <- lapply(mt[, c(2, 8, 9)], factor)
  pim <- "    Cell Contents
 |---------------|
 |     Frequency |
 |       Percent |
 |       Row Pct |
 |       Col Pct |
 |---------------|

 Total Observations:  32

                         cyl vs vs
-------------------------------------------------------------
|              |                     vs                     |
-------------------------------------------------------------
|          cyl |            1 |            2 |    Row Total |
-------------------------------------------------------------
|            1 |            1 |           10 |           11 |
|              |        0.031 |        0.312 |              |
|              |         0.09 |         0.91 |         0.34 |
|              |         0.06 |         0.71 |              |
-------------------------------------------------------------
|            2 |            3 |            4 |            7 |
|              |        0.094 |        0.125 |              |
|              |         0.43 |         0.57 |         0.22 |
|              |         0.17 |         0.29 |              |
-------------------------------------------------------------
|            3 |           14 |            0 |           14 |
|              |        0.438 |            0 |              |
|              |            1 |            0 |         0.44 |
|              |         0.78 |            0 |              |
-------------------------------------------------------------
| Column Total |           18 |           14 |           32 |
|              |        0.563 |        0.437 |              |
-------------------------------------------------------------


                         cyl vs am
-------------------------------------------------------------
|              |                     am                     |
-------------------------------------------------------------
|          cyl |            1 |            2 |    Row Total |
-------------------------------------------------------------
|            1 |            3 |            8 |           11 |
|              |        0.094 |         0.25 |              |
|              |         0.27 |         0.73 |         0.34 |
|              |         0.16 |         0.62 |              |
-------------------------------------------------------------
|            2 |            4 |            3 |            7 |
|              |        0.125 |        0.094 |              |
|              |         0.57 |         0.43 |         0.22 |
|              |         0.21 |         0.23 |              |
-------------------------------------------------------------
|            3 |           12 |            2 |           14 |
|              |        0.375 |        0.062 |              |
|              |         0.86 |         0.14 |         0.44 |
|              |         0.63 |         0.15 |              |
-------------------------------------------------------------
| Column Total |           19 |           13 |           32 |
|              |        0.594 |        0.406 |              |
-------------------------------------------------------------


                          vs vs am
-------------------------------------------------------------
|              |                     am                     |
-------------------------------------------------------------
|           vs |            1 |            2 |    Row Total |
-------------------------------------------------------------
|            1 |           12 |            6 |           18 |
|              |        0.375 |        0.188 |              |
|              |         0.67 |         0.33 |         0.56 |
|              |         0.63 |         0.46 |              |
-------------------------------------------------------------
|            2 |            7 |            7 |           14 |
|              |        0.219 |        0.219 |              |
|              |          0.5 |          0.5 |         0.44 |
|              |         0.37 |         0.54 |              |
-------------------------------------------------------------
| Column Total |           19 |           13 |           32 |
|              |        0.594 |        0.407 |              |
-------------------------------------------------------------

"
  expect_output(ds_auto_cross_table(mt), pim)
})
rsquaredacademy/descriptr documentation built on July 9, 2021, 8:13 p.m.