# Introduction to fastrep

# Overview

The objective of this package is to facilitate producing reports using Rmarkdown, so the functions are of that type that you “you always have to use, but you always have to create”.

## The core function : `tbl`

This is the main function of `fastrep`, with her you can make tables in `HTML` or `latex` format, the main idea is to provide minimal parameters to create their own table, so you just need to provide a `data.frame`.

    df = Orange |>
      dplyr::group_by(Tree) |>
      dplyr::count()

    fastrep::tbl(df)

Tree | n
--- | ---
3 | 7
1 | 7
5 | 7
2 | 7
4 | 7

As you can see the only parameters is `df`, you can put a title in the table using `title`

    df |>
      fastrep::tbl(title = "My Title!", full_page = F)

My Title!
Tree | n
--- | ---
3 | 7
1 | 7
5 | 7
2 | 7
4 | 7

The value of format will be automatically determined if the function is called within a knitr document, but in your section, the default format is `html`, if you want to change just use the argument `format` which the possibles values are `html` or `latex`. If you want the code that generates the table you can use the argument `code`.

    df |>
      fastrep::tbl(title = "My Title!", code = T, format = "latex")

You can choose if you want rows separating the cells in the table (LaTeX version), using `tabs = TRUE`

## `freq_tbl`

This function creates a frequency table, you only need to supply a `data.frame` and the variable to make the table.

    infert |>
      fastrep::freq_tbl(education)
    #> # A tibble: 4 × 3
    #>   education absolute_frequency relative_frequency
    #>   <chr>                  <int>              <dbl>
    #> 1 0-5yrs                    12             0.0484
    #> 2 6-11yrs                  120             0.484
    #> 3 12+ yrs                  116             0.468
    #> 4 Total                    248             1

If you want to generate a table using the output, just combine it with `tbl`

    infert |>
      fastrep::freq_tbl(education) |>
      fastrep::tbl()

education | absolute_frequency | relative_frequency
--- | --- | ---
0-5yrs | 12 | 0.0484
6-11yrs | 120 | 0.4839
12+ yrs | 116 | 0.4677
Total | 248 | 1.0000

You can order the output using `sort_by`, which has two options: `absolute_frequency` and `relative_frequency`.

    chickwts |>
      fastrep::freq_tbl(feed, sort_by = absolute_frequency)
    #> # A tibble: 7 × 3
    #>   feed      absolute_frequency relative_frequency
    #>   <chr>                  <int>              <dbl>
    #> 1 horsebean                 10              0.141
    #> 2 meatmeal                  11              0.155
    #> 3 casein                    12              0.169
    #> 4 linseed                   12              0.169
    #> 5 sunflower                 12              0.169
    #> 6 soybean                   14              0.197
    #> 7 Total                     71              1.00

And if you want decreasing order put `desc = T`

    chickwts |>
      fastrep::freq_tbl(feed, desc = T, sort_by = relative_frequency)
    #> # A tibble: 7 × 3
    #>   feed      absolute_frequency relative_frequency
    #>   <chr>                  <int>              <dbl>
    #> 1 soybean                   14              0.197
    #> 2 casein                    12              0.169
    #> 3 linseed                   12              0.169
    #> 4 sunflower                 12              0.169
    #> 5 meatmeal                  11              0.155
    #> 6 horsebean                 10              0.141
    #> 7 Total                     71              1.00

## `cross_tbl`

This function makes cross tables, like all functions from `fastrep` you need to supply a `data.frame`, and in this case two variables.

    infert |>
      fastrep::cross_tbl(education, spontaneous)

| spontaneous
--- | ---
education | 0 | 1 | 2 | Total
0-5yrs | 9 | 1 | 2 | 12
6-11yrs | 71 | 33 | 16 | 120
12+ yrs | 61 | 37 | 18 | 116
Total | 141 | 71 | 36 | 248

The second variable (`var2`) is on the top of the table, if you want the marginal row table use `marg = TRUE`.

    infert |>
      fastrep::cross_tbl(education, spontaneous, marg = T)

| spontaneous
--- | ---
education | 0 | 1 | 2
0-5yrs | 0.7500000 | 0.0833333 | 0.1666667
6-11yrs | 0.5916667 | 0.2750000 | 0.1333333
12+ yrs | 0.5258621 | 0.3189655 | 0.1551724

## `describe`

In the base R we have the function summary, but the output is no by default a `data.frame`, so `describe` is an enhancement of this function to summarize data frames.

    mtcars |>
      fastrep::describe()
    #> # A tibble: 11 × 7
    #>    variable    mean median      sd   min    max na_count
    #>    <chr>      <dbl>  <dbl>   <dbl> <dbl>  <dbl>    <dbl>
    #>  1 mpg       20.1    19.2    6.03  10.4   33.9         0
    #>  2 cyl        6.19    6      1.79   4      8           0
    #>  3 disp     231.    196.   124.    71.1  472           0
    #>  4 hp       147.    123     68.6   52    335           0
    #>  5 drat       3.60    3.70   0.535  2.76   4.93        0
    #>  6 wt         3.22    3.32   0.978  1.51   5.42        0
    #>  7 qsec      17.8    17.7    1.79  14.5   22.9         0
    #>  8 vs         0.438   0      0.504  0      1           0
    #>  9 am         0.406   0      0.499  0      1           0
    #> 10 gear       3.69    4      0.738  3      5           0
    #> 11 carb       2.81    2      1.62   1      8           0

As you’ve probably noticed, the output is a `tibble`, so you can combine with `tbl`

    mtcars |>
      fastrep::describe() |>
      fastrep::tbl("Summary of mtcars")

Summary of mtcars
variable | mean | median | sd | min | max | na_count
--- | --- | --- | --- | --- | --- | ---
mpg | 20.091 | 19.200 | 6.027 | 10.400 | 33.900 | 0
cyl | 6.188 | 6.000 | 1.786 | 4.000 | 8.000 | 0
disp | 230.722 | 196.300 | 123.939 | 71.100 | 472.000 | 0
hp | 146.688 | 123.000 | 68.563 | 52.000 | 335.000 | 0
drat | 3.597 | 3.695 | 0.535 | 2.760 | 4.930 | 0
wt | 3.217 | 3.325 | 0.978 | 1.513 | 5.424 | 0
qsec | 17.849 | 17.710 | 1.787 | 14.500 | 22.900 | 0
vs | 0.438 | 0.000 | 0.504 | 0.000 | 1.000 | 0
am | 0.406 | 0.000 | 0.499 | 0.000 | 1.000 | 0
gear | 3.688 | 4.000 | 0.738 | 3.000 | 5.000 | 0
carb | 2.812 | 2.000 | 1.615 | 1.000 | 8.000 | 0