Introduction
First, we apply labels on the well-known mtcars
dataset:
library(expss)
data(mtcars)
mtcars = apply_labels(mtcars,
                      mpg = "Miles/(US) gallon",
                      cyl = "Number of cylinders",
                      disp = "Displacement (cu.in.)",
                      hp = "Gross horsepower",
                      drat = "Rear axle ratio",
                      wt = "Weight (1000 lbs)",
                      qsec = "1/4 mile time",
                      vs = "Engine",
                      vs = c("V-engine" = 0,
                             "Straight engine" = 1),
                      am = "Transmission",
                      am = c("Automatic" = 0,
                             "Manual"=1),
                      gear = "Number of forward gears",
                      carb = "Number of carburetors"
)
Table construction consists of at least of three functions chained
with magrittr pipe operator: %>%. At first we need to
specify variables for which statistics will be computed with
tab_cells. Secondary, we calculate statistics with one of
tab_stat_* functions. And last, we finalize table creation
with tab_pivot:
dataset %>% tab_cells(variable) %>% tab_stat_cases() %>% tab_pivot().
We can split our statistics by columns with tab_cols or by
rows with tab_rows. After that we can sort table with
tab_sort_asc, drop empty rows/columns with
drop_rc and transpose with tab_transpose.
Generally, resulting table is just a data.frame so we can use arbitrary
operations on it. Statistic is always calculated on the last cells,
column/row variables, weight, missing values and subgroup. To define new
cell/column/row variables we can call appropriate function one more
time. tab_pivot defines how we combine different statistics
and where statistic labels will appear - inside/outside
rows/columns.
 
Simple column percent
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(vs) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Simple column percent")
| 
Simple column percent
 | 
| 
 | 
 Engine 
 | 
| 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
5.6
 | 
71.4
 | 
| 
   6 
 | 
16.7
 | 
28.6
 | 
| 
   8 
 | 
77.8
 | 
 | 
| 
   #Total cases 
 | 
18
 | 
14
 | 
 
Split by columns and rows
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(vs) %>% 
    tab_rows(am) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Split by columns and rows")
| 
Split by columns and rows
 | 
| 
 | 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Transmission 
 | 
| 
   Automatic 
 | 
 Number of cylinders 
 | 
 4 
 | 
 
 | 
 | 
42.9
 | 
| 
  
 | 
 | 
 6 
 | 
 
 | 
 | 
57.1
 | 
| 
  
 | 
 | 
 8 
 | 
 
 | 
100.0
 | 
 | 
| 
  
 | 
 | 
 #Total cases 
 | 
 
 | 
12
 | 
7
 | 
| 
   Manual 
 | 
 Number of cylinders 
 | 
 4 
 | 
 
 | 
16.7
 | 
100.0
 | 
| 
  
 | 
 | 
 6 
 | 
 
 | 
50.0
 | 
 | 
| 
  
 | 
 | 
 8 
 | 
 
 | 
33.3
 | 
 | 
| 
  
 | 
 | 
 #Total cases 
 | 
 
 | 
6
 | 
7
 | 
 
Multiple banners, table is sorted by total
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), vs, am) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_sort_desc() %>% 
    tab_caption("Multiple banners, table is sorted by total")
| 
Multiple banners, table is sorted by total
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Number of cylinders 
 | 
| 
   8 
 | 
43.8
 | 
 
 | 
77.8
 | 
 | 
 
 | 
63.2
 | 
15.4
 | 
| 
   4 
 | 
34.4
 | 
 
 | 
5.6
 | 
71.4
 | 
 
 | 
15.8
 | 
61.5
 | 
| 
   6 
 | 
21.9
 | 
 
 | 
16.7
 | 
28.6
 | 
 
 | 
21.1
 | 
23.1
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
18
 | 
14
 | 
 
 | 
19
 | 
13
 | 
 
Nested banners
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), vs %nest% am) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Nested banners")
| 
Nested banners
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 
 | 
 V-engine 
 | 
 
 | 
 Straight engine 
 | 
| 
 | 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
34.4
 | 
 
 | 
 | 
16.7
 | 
 
 | 
42.9
 | 
100
 | 
| 
   6 
 | 
21.9
 | 
 
 | 
 | 
50.0
 | 
 
 | 
57.1
 | 
 | 
| 
   8 
 | 
43.8
 | 
 
 | 
100
 | 
33.3
 | 
 
 | 
 | 
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
12
 | 
6
 | 
 
 | 
7
 | 
7
 | 
 
Multiple nested banners
mtcars %>% 
    tab_cells(carb) %>% 
    tab_cols(total(), list(cyl, vs) %nest% am) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Multiple nested banners")
| 
Multiple nested banners
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Number of cylinders 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 
 | 
 4 
 | 
 
 | 
 6 
 | 
 
 | 
 8 
 | 
 
 | 
 V-engine 
 | 
 
 | 
 Straight engine 
 | 
| 
 | 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Number of carburetors 
 | 
| 
   1 
 | 
21.9
 | 
 
 | 
33.3
 | 
50
 | 
 
 | 
50
 | 
 | 
 
 | 
 | 
 | 
 
 | 
 | 
 | 
 
 | 
42.9
 | 
57.1
 | 
| 
   2 
 | 
31.2
 | 
 
 | 
66.7
 | 
50
 | 
 
 | 
 | 
 | 
 
 | 
33.3
 | 
 | 
 
 | 
33.3
 | 
16.7
 | 
 
 | 
28.6
 | 
42.9
 | 
| 
   3 
 | 
9.4
 | 
 
 | 
 | 
 | 
 
 | 
 | 
 | 
 
 | 
25.0
 | 
 | 
 
 | 
25.0
 | 
 | 
 
 | 
 | 
 | 
| 
   4 
 | 
31.2
 | 
 
 | 
 | 
 | 
 
 | 
50
 | 
66.7
 | 
 
 | 
41.7
 | 
50
 | 
 
 | 
41.7
 | 
50.0
 | 
 
 | 
28.6
 | 
 | 
| 
   6 
 | 
3.1
 | 
 
 | 
 | 
 | 
 
 | 
 | 
33.3
 | 
 
 | 
 | 
 | 
 
 | 
 | 
16.7
 | 
 
 | 
 | 
 | 
| 
   8 
 | 
3.1
 | 
 
 | 
 | 
 | 
 
 | 
 | 
 | 
 
 | 
 | 
50
 | 
 
 | 
 | 
16.7
 | 
 
 | 
 | 
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
3
 | 
8
 | 
 
 | 
4
 | 
3
 | 
 
 | 
12
 | 
2
 | 
 
 | 
12
 | 
6
 | 
 
 | 
7
 | 
7
 | 
 
Multiple variable and multiple summary statistics
mtcars %>% 
    tab_cells(mpg, disp, hp, wt, qsec) %>%
    tab_cols(total(), am) %>% 
    tab_stat_fun(Mean = w_mean, "Std. dev." = w_sd, "Valid N" = w_n) %>%
    tab_pivot() %>% 
    tab_caption("Multiple variable and multiple summary statistics")
| 
Multiple variable and multiple summary statistics
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Miles/(US) gallon 
 | 
| 
   Mean 
 | 
20.1
 | 
 
 | 
17.1
 | 
24.4
 | 
| 
   Std. dev. 
 | 
6.0
 | 
 
 | 
3.8
 | 
6.2
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
 Displacement (cu.in.) 
 | 
| 
   Mean 
 | 
230.7
 | 
 
 | 
290.4
 | 
143.5
 | 
| 
   Std. dev. 
 | 
123.9
 | 
 
 | 
110.2
 | 
87.2
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
 Gross horsepower 
 | 
| 
   Mean 
 | 
146.7
 | 
 
 | 
160.3
 | 
126.8
 | 
| 
   Std. dev. 
 | 
68.6
 | 
 
 | 
53.9
 | 
84.1
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
 Weight (1000 lbs) 
 | 
| 
   Mean 
 | 
3.2
 | 
 
 | 
3.8
 | 
2.4
 | 
| 
   Std. dev. 
 | 
1.0
 | 
 
 | 
0.8
 | 
0.6
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
 1/4 mile time 
 | 
| 
   Mean 
 | 
17.8
 | 
 
 | 
18.2
 | 
17.4
 | 
| 
   Std. dev. 
 | 
1.8
 | 
 
 | 
1.8
 | 
1.8
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
 
Multiple variable and multiple summary statistics - statistic lables
in columns
mtcars %>% 
    tab_cells(mpg, disp, hp, wt, qsec) %>%
    tab_cols(total(), am) %>% 
    tab_stat_fun(Mean = w_mean, "Valid N" = w_n, method = list) %>%
    tab_pivot() %>% 
    tab_caption("Multiple variable and multiple summary statistics - statistic lables in columns")
| 
Multiple variable and multiple summary statistics - statistic lables in
columns
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 Mean 
 | 
 
 | 
 Valid N 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 | 
 
 | 
 Mean 
 | 
 Valid N 
 | 
 
 | 
 Mean 
 | 
 Valid N 
 | 
| 
 Miles/(US) gallon 
 | 
20.1
 | 
 
 | 
32
 | 
 
 | 
17.1
 | 
19
 | 
 
 | 
24.4
 | 
13
 | 
| 
 Displacement (cu.in.) 
 | 
230.7
 | 
 
 | 
32
 | 
 
 | 
290.4
 | 
19
 | 
 
 | 
143.5
 | 
13
 | 
| 
 Gross horsepower 
 | 
146.7
 | 
 
 | 
32
 | 
 
 | 
160.3
 | 
19
 | 
 
 | 
126.8
 | 
13
 | 
| 
 Weight (1000 lbs) 
 | 
3.2
 | 
 
 | 
32
 | 
 
 | 
3.8
 | 
19
 | 
 
 | 
2.4
 | 
13
 | 
| 
 1/4 mile time 
 | 
17.8
 | 
 
 | 
32
 | 
 
 | 
18.2
 | 
19
 | 
 
 | 
17.4
 | 
13
 | 
 
Filter dataset and exclude empty columns
mtcars %>% 
    tab_subgroup(am == 0) %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), vs %nest% am) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    drop_empty_columns() %>%
    tab_caption("Filter dataset and exclude empty columns")
| 
Filter dataset and exclude empty columns
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 
 | 
 V-engine 
 | 
 
 | 
 Straight engine 
 | 
| 
 | 
 | 
 
 | 
 Transmission 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Automatic 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
15.8
 | 
 
 | 
 | 
 
 | 
42.9
 | 
| 
   6 
 | 
21.1
 | 
 
 | 
 | 
 
 | 
57.1
 | 
| 
   8 
 | 
63.2
 | 
 
 | 
100
 | 
 
 | 
 | 
| 
   #Total cases 
 | 
19
 | 
 
 | 
12
 | 
 
 | 
7
 | 
 
Total at the top of the table
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), vs) %>% 
    tab_rows(am) %>% 
    tab_stat_cpct(total_row_position = "above",
                  total_label = c("number of cases", "row %"),
                  total_statistic = c("u_cases", "u_rpct")) %>% 
    tab_pivot() %>% 
    tab_caption("Total at the top of the table")
| 
Total at the top of the table
 | 
| 
 | 
 | 
 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 | 
 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Transmission 
 | 
| 
   Automatic 
 | 
 Number of cylinders 
 | 
 #number of cases 
 | 
 
 | 
19
 | 
 
 | 
12
 | 
7
 | 
| 
  
 | 
 | 
 #row % 
 | 
 
 | 
100
 | 
 
 | 
63.2
 | 
36.8
 | 
| 
  
 | 
 | 
 4 
 | 
 
 | 
15.8
 | 
 
 | 
 | 
42.9
 | 
| 
  
 | 
 | 
 6 
 | 
 
 | 
21.1
 | 
 
 | 
 | 
57.1
 | 
| 
  
 | 
 | 
 8 
 | 
 
 | 
63.2
 | 
 
 | 
100.0
 | 
 | 
| 
   Manual 
 | 
 Number of cylinders 
 | 
 #number of cases 
 | 
 
 | 
13
 | 
 
 | 
6
 | 
7
 | 
| 
  
 | 
 | 
 #row % 
 | 
 
 | 
100
 | 
 
 | 
46.2
 | 
53.8
 | 
| 
  
 | 
 | 
 4 
 | 
 
 | 
61.5
 | 
 
 | 
16.7
 | 
100.0
 | 
| 
  
 | 
 | 
 6 
 | 
 
 | 
23.1
 | 
 
 | 
50.0
 | 
 | 
| 
  
 | 
 | 
 8 
 | 
 
 | 
15.4
 | 
 
 | 
33.3
 | 
 | 
 
Three different statistics in each cell - stat. labels in rows
mtcars %>%
    tab_cells(am) %>%
    tab_cols(total(), vs) %>%
    tab_total_row_position("none") %>% 
    tab_stat_cpct(label = "col %") %>%
    tab_stat_rpct(label = "row %") %>%
    tab_stat_tpct(label = "table %") %>%
    tab_pivot(stat_position = "inside_rows") %>% 
    tab_caption("Three different statistics in each cell - stat. labels in rows")
| 
Three different statistics in each cell - stat. labels in rows
 | 
| 
 | 
 | 
 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Transmission 
 | 
| 
   Automatic 
 | 
 col % 
 | 
 
 | 
59.4
 | 
 
 | 
66.7
 | 
50.0
 | 
| 
  
 | 
 row % 
 | 
 
 | 
100.0
 | 
 
 | 
63.2
 | 
36.8
 | 
| 
  
 | 
 table % 
 | 
 
 | 
59.4
 | 
 
 | 
37.5
 | 
21.9
 | 
| 
   Manual 
 | 
 col % 
 | 
 
 | 
40.6
 | 
 
 | 
33.3
 | 
50.0
 | 
| 
  
 | 
 row % 
 | 
 
 | 
100.0
 | 
 
 | 
46.2
 | 
53.8
 | 
| 
  
 | 
 table % 
 | 
 
 | 
40.6
 | 
 
 | 
18.8
 | 
21.9
 | 
 
Three different statistics in each cell - stat. labels in
columns
mtcars %>%
    tab_cells(am) %>%
    tab_cols(total(), vs) %>%
    tab_total_row_position("none") %>% 
    tab_stat_cpct(label = "col %") %>%
    tab_stat_rpct(label = "row %") %>%
    tab_stat_tpct(label = "table %") %>%
    tab_pivot(stat_position = "inside_columns") %>% 
    tab_caption("Three different statistics in each cell - stat. labels in columns")
| 
Three different statistics in each cell - stat. labels in columns
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 col % 
 | 
 
 | 
 row % 
 | 
 
 | 
 table % 
 | 
 
 | 
 V-engine 
 | 
 
 | 
 Straight engine 
 | 
| 
 | 
 | 
 
 | 
 | 
 
 | 
 | 
 
 | 
 col % 
 | 
 row % 
 | 
 table % 
 | 
 
 | 
 col % 
 | 
 row % 
 | 
 table % 
 | 
| 
 Transmission 
 | 
| 
   Automatic 
 | 
59.4
 | 
 
 | 
100
 | 
 
 | 
59.4
 | 
 
 | 
66.7
 | 
63.2
 | 
37.5
 | 
 
 | 
50
 | 
36.8
 | 
21.9
 | 
| 
   Manual 
 | 
40.6
 | 
 
 | 
100
 | 
 
 | 
40.6
 | 
 
 | 
33.3
 | 
46.2
 | 
18.8
 | 
 
 | 
50
 | 
53.8
 | 
21.9
 | 
 
Stacked statistics
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), am) %>% 
    tab_stat_mean() %>%
    tab_stat_se() %>% 
    tab_stat_valid_n() %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Stacked statistics")
| 
Stacked statistics
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Number of cylinders 
 | 
| 
   Mean 
 | 
6.2
 | 
 
 | 
6.9
 | 
5.1
 | 
| 
   S. E. 
 | 
0.3
 | 
 
 | 
0.4
 | 
0.4
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
   4 
 | 
34.4
 | 
 
 | 
15.8
 | 
61.5
 | 
| 
   6 
 | 
21.9
 | 
 
 | 
21.1
 | 
23.1
 | 
| 
   8 
 | 
43.8
 | 
 
 | 
63.2
 | 
15.4
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
19
 | 
13
 | 
 
Stacked statistics with section headings
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), am) %>% 
    tab_row_label("#Summary statistics") %>% 
    tab_stat_mean() %>%
    tab_stat_se() %>% 
    tab_stat_valid_n() %>% 
    tab_row_label("#Column percent") %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Stacked statistics with section headings")
| 
Stacked statistics with section headings
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 #Summary statistics 
 | 
| 
  
 | 
 | 
 
 | 
 | 
 | 
| 
 Number of cylinders 
 | 
| 
   Mean 
 | 
6.2
 | 
 
 | 
6.9
 | 
5.1
 | 
| 
   S. E. 
 | 
0.3
 | 
 
 | 
0.4
 | 
0.4
 | 
| 
   Valid N 
 | 
32.0
 | 
 
 | 
19.0
 | 
13.0
 | 
| 
 #Column percent 
 | 
| 
  
 | 
 | 
 
 | 
 | 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
34.4
 | 
 
 | 
15.8
 | 
61.5
 | 
| 
   6 
 | 
21.9
 | 
 
 | 
21.1
 | 
23.1
 | 
| 
   8 
 | 
43.8
 | 
 
 | 
63.2
 | 
15.4
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
19
 | 
13
 | 
 
Stacked statistics - different statistics for different
variables
mtcars %>% 
    tab_cols(total(), am) %>% 
    tab_cells(mpg, hp, qsec) %>% 
    tab_stat_mean() %>%
    tab_cells(cyl, carb) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    tab_caption("Stacked statistics - different statistics for different variables")
| 
Stacked statistics - different statistics for different variables
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Miles/(US) gallon 
 | 
| 
   Mean 
 | 
20.1
 | 
 
 | 
17.1
 | 
24.4
 | 
| 
 Gross horsepower 
 | 
| 
   Mean 
 | 
146.7
 | 
 
 | 
160.3
 | 
126.8
 | 
| 
 1/4 mile time 
 | 
| 
   Mean 
 | 
17.8
 | 
 
 | 
18.2
 | 
17.4
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
34.4
 | 
 
 | 
15.8
 | 
61.5
 | 
| 
   6 
 | 
21.9
 | 
 
 | 
21.1
 | 
23.1
 | 
| 
   8 
 | 
43.8
 | 
 
 | 
63.2
 | 
15.4
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
19
 | 
13
 | 
| 
 Number of carburetors 
 | 
| 
   1 
 | 
21.9
 | 
 
 | 
15.8
 | 
30.8
 | 
| 
   2 
 | 
31.2
 | 
 
 | 
31.6
 | 
30.8
 | 
| 
   3 
 | 
9.4
 | 
 
 | 
15.8
 | 
 | 
| 
   4 
 | 
31.2
 | 
 
 | 
36.8
 | 
23.1
 | 
| 
   6 
 | 
3.1
 | 
 
 | 
 | 
7.7
 | 
| 
   8 
 | 
3.1
 | 
 
 | 
 | 
7.7
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
19
 | 
13
 | 
 
Linear regression by groups
mtcars %>% 
    tab_cells(sheet(mpg, disp, hp, wt, qsec)) %>% 
    tab_cols(total(), am) %>% 
    tab_stat_fun_df(
        function(x){
            frm = reformulate(".", response = as.name(names(x)[1]))
            model = lm(frm, data = x)
            sheet('Coef.' = coef(model), 
                  confint(model)
            )
        }    
    ) %>% 
    tab_pivot() %>% 
    tab_caption("Linear regression by groups")
| 
Linear regression by groups
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 Coef. 
 | 
 
 | 
 2.5 % 
 | 
 
 | 
 97.5 % 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 | 
 
 | 
 | 
 
 | 
 Coef. 
 | 
 2.5 % 
 | 
 97.5 % 
 | 
 
 | 
 Coef. 
 | 
 2.5 % 
 | 
 97.5 % 
 | 
| 
 (Intercept) 
 | 
27.3
 | 
 
 | 
9.6
 | 
 
 | 
45.1
 | 
 
 | 
21.8
 | 
-1.9
 | 
45.5
 | 
 
 | 
13.3
 | 
-21.9
 | 
48.4
 | 
 Displacement (cu.in.) 
 | 
0.0
 | 
 
 | 
0.0
 | 
 
 | 
0.0
 | 
 
 | 
0.0
 | 
0.0
 | 
0.0
 | 
 
 | 
0.0
 | 
-0.1
 | 
0.1
 | 
 Gross horsepower 
 | 
0.0
 | 
 
 | 
-0.1
 | 
 
 | 
0.0
 | 
 
 | 
0.0
 | 
-0.1
 | 
0.0
 | 
 
 | 
0.0
 | 
0.0
 | 
0.1
 | 
 Weight (1000 lbs) 
 | 
-4.6
 | 
 
 | 
-7.2
 | 
 
 | 
-2.0
 | 
 
 | 
-2.3
 | 
-5.0
 | 
0.4
 | 
 
 | 
-7.7
 | 
-12.5
 | 
-2.9
 | 
 1/4 mile time 
 | 
0.5
 | 
 
 | 
-0.4
 | 
 
 | 
1.5
 | 
 
 | 
0.4
 | 
-0.7
 | 
1.6
 | 
 
 | 
1.6
 | 
-0.2
 | 
3.4
 | 
 
Subtotals
mtcars %>% 
    tab_cells(mpg) %>% 
    tab_cols(total(), vs) %>% 
    tab_rows(subtotal(cyl, 1:2, 3:4, "5 and more" = 5 %thru% hi)) %>% 
    tab_stat_mean() %>% 
    tab_pivot() %>% 
    tab_caption("Subtotals in rows")
| 
Subtotals in rows
 | 
| 
 | 
 | 
 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 | 
 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Number of cylinders 
 | 
| 
   1 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   2 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   TOTAL 1/2 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   3 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   4 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
26.7
 | 
 
 | 
26.0
 | 
26.7
 | 
| 
   TOTAL 3/4 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
26.7
 | 
 
 | 
26.0
 | 
26.7
 | 
| 
   6 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
19.7
 | 
 
 | 
20.6
 | 
19.1
 | 
| 
   8 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
15.1
 | 
 
 | 
15.1
 | 
 | 
| 
   5 and more 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
16.6
 | 
 
 | 
16.1
 | 
19.1
 | 
 
Subtotals at the bottom of the table
mtcars %>% 
    tab_cells(mpg, qsec) %>% 
    tab_cols(total(), vs) %>% 
    tab_rows(subtotal(cyl, 1:2, 3:4, "TOTAL 5 and more" = 5 %thru% hi, position = "bottom")) %>% 
    tab_stat_mean() %>% 
    tab_pivot() %>% 
    tab_caption("Subtotals at the bottom of the table")
| 
Subtotals at the bottom of the table
 | 
| 
 | 
 | 
 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 | 
 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Number of cylinders 
 | 
| 
   1 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   2 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   3 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   4 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
26.7
 | 
 
 | 
26.0
 | 
26.7
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
19.1
 | 
 
 | 
16.7
 | 
19.4
 | 
| 
   6 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
19.7
 | 
 
 | 
20.6
 | 
19.1
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
18.0
 | 
 
 | 
16.3
 | 
19.2
 | 
| 
   8 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
15.1
 | 
 
 | 
15.1
 | 
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
16.8
 | 
 
 | 
16.8
 | 
 | 
| 
   TOTAL 1/2 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   TOTAL 3/4 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
26.7
 | 
 
 | 
26.0
 | 
26.7
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
19.1
 | 
 
 | 
16.7
 | 
19.4
 | 
| 
   TOTAL 5 and more 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
16.6
 | 
 
 | 
16.1
 | 
19.1
 | 
| 
  
 | 
 1/4 mile time 
 | 
 Mean 
 | 
 
 | 
17.2
 | 
 
 | 
16.7
 | 
19.2
 | 
 
Nets
Net, contrary to subtotal, remove original
categories.
mtcars %>% 
    tab_cells(mpg) %>% 
    tab_cols(total(), vs) %>% 
    tab_rows(net(cyl, 1:2, 3:4, "NET 5 and more" = 5 %thru% hi, prefix = "NET ")) %>% 
    tab_stat_mean() %>% 
    tab_pivot() %>% 
    tab_caption("Nets in rows, custom prefix")
| 
Nets in rows, custom prefix
 | 
| 
 | 
 | 
 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 | 
 
 | 
 | 
 
 | 
 V-engine 
 | 
 Straight engine 
 | 
| 
 Number of cylinders 
 | 
| 
   NET 1/2 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
| 
   NET 3/4 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
26.7
 | 
 
 | 
26.0
 | 
26.7
 | 
| 
   NET 5 and more 
 | 
 Miles/(US) gallon 
 | 
 Mean 
 | 
 
 | 
16.6
 | 
 
 | 
16.1
 | 
19.1
 | 
 
Nets with complex grouping
mtcars %>% 
    tab_cells(net(mpg, "Low mpg" = less(mean(mpg)), "High mpg" = greater_or_equal(mean(mpg)))) %>% 
    tab_cols(total(), am) %>% 
    tab_stat_cases() %>% 
    tab_pivot() %>% 
    tab_caption("Nets with complex grouping")
| 
Nets with complex grouping
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 Manual 
 | 
| 
 Miles/(US) gallon 
 | 
| 
   Low mpg 
 | 
18
 | 
 
 | 
15
 | 
3
 | 
| 
   High mpg 
 | 
14
 | 
 
 | 
4
 | 
10
 | 
| 
   #Total cases 
 | 
32
 | 
 
 | 
19
 | 
13
 | 
 
Significance testing on column percent
Letters marks cells which are significantly greater than cells in the
appropriate columns. - and + marks values
which are lower/greater than values in the first column. Significance
testing on column percent should be applied on the result of
tab_stat_cpct with total row.
mtcars %>% 
    tab_cells(cyl) %>% 
    tab_cols(total(), vs) %>% 
    tab_stat_cpct() %>% 
    tab_pivot() %>% 
    significance_cpct(compare_type = c("first_column", "subtable"), sig_level = 0.05) %>% 
    tab_caption("Significance testing on column percent")
| 
Significance testing on column percent
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Engine 
 | 
| 
 | 
 | 
 
 | 
 V-engine 
 | 
 
 | 
 Straight engine 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
34.4 
 | 
 
 | 
5.6 -
 | 
 
 | 
71.4 + A
 | 
| 
   6 
 | 
21.9 
 | 
 
 | 
16.7  
 | 
 
 | 
28.6  
 | 
| 
   8 
 | 
43.8 
 | 
 
 | 
77.8 +
 | 
 
 | 
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
18  
 | 
 
 | 
14  
 | 
 
Significance testing on means
Significance testing on means should be applied on the result of
tab_stat_mean_sd_n.
mtcars %>% 
    tab_cells(mpg, disp, hp, wt, qsec) %>%
    tab_cols(total(), am) %>% 
    tab_stat_mean_sd_n() %>%
    tab_pivot() %>% 
    significance_means(compare_type = c("first_column", "subtable")) %>% 
    tab_caption("Significance testing on means")
| 
Significance testing on means
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Miles/(US) gallon 
 | 
| 
   Mean 
 | 
20.1 
 | 
 
 | 
17.1 -  
 | 
 
 | 
24.4 + A
 | 
| 
   Std. dev. 
 | 
6.0 
 | 
 
 | 
3.8  
 | 
 
 | 
6.2  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0  
 | 
| 
 Displacement (cu.in.) 
 | 
| 
   Mean 
 | 
230.7 
 | 
 
 | 
290.4 B  
 | 
 
 | 
143.5 -  
 | 
| 
   Std. dev. 
 | 
123.9 
 | 
 
 | 
110.2  
 | 
 
 | 
87.2  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0  
 | 
| 
 Gross horsepower 
 | 
| 
   Mean 
 | 
146.7 
 | 
 
 | 
160.3  
 | 
 
 | 
126.8  
 | 
| 
   Std. dev. 
 | 
68.6 
 | 
 
 | 
53.9  
 | 
 
 | 
84.1  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0  
 | 
| 
 Weight (1000 lbs) 
 | 
| 
   Mean 
 | 
3.2 
 | 
 
 | 
3.8 + B
 | 
 
 | 
2.4 -  
 | 
| 
   Std. dev. 
 | 
1.0 
 | 
 
 | 
0.8  
 | 
 
 | 
0.6  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0  
 | 
| 
 1/4 mile time 
 | 
| 
   Mean 
 | 
17.8 
 | 
 
 | 
18.2  
 | 
 
 | 
17.4  
 | 
| 
   Std. dev. 
 | 
1.8 
 | 
 
 | 
1.8  
 | 
 
 | 
1.8  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0  
 | 
 
Multiple-response variables with weighting
Here we load data with multiple-responce questions.
mrset means that we treat set of variables as multiple
response varibale with category encoding. For dichotomy encoding use
mdset.
data(product_test)
codeframe_likes = num_lab("
                          1 Liked everything
                          2 Disliked everything
                          3 Chocolate
                          4 Appearance
                          5 Taste
                          6 Stuffing
                          7 Nuts
                          8 Consistency
                          98 Other
                          99 Hard to answer
                          ")
set.seed(1)
product_test = product_test %>% 
    let( 
        # recode age by groups
        age_cat = recode(s2a, lo %thru% 25 ~ 1, lo %thru% hi ~ 2),
        wgt = runif(.N, 0.25, 4),
        wgt = wgt/sum(wgt)*.N
    )  %>% 
    apply_labels(
        age_cat = "Age",
        age_cat = c("18 - 25" = 1, "26 - 35" = 2),
        a1_1 = "Likes. VSX123",
        b1_1 = "Likes. SDF456",
        a1_1 = codeframe_likes,
        b1_1 = codeframe_likes
    )
product_test %>% 
    tab_cells(mrset(a1_1 %to% a1_6), mrset(b1_1 %to% b1_6)) %>% 
    tab_cols(total(), age_cat) %>% 
    tab_weight(wgt) %>% 
    tab_stat_cpct() %>% 
    tab_sort_desc() %>% 
    tab_pivot() %>% 
    tab_caption("Multiple-response variables with weighting")
| 
Multiple-response variables with weighting
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Age 
 | 
| 
 | 
 | 
 
 | 
 18 - 25 
 | 
 26 - 35 
 | 
| 
 Likes. VSX123 
 | 
| 
   Nuts 
 | 
68.0
 | 
 
 | 
82.5
 | 
53.7
 | 
| 
   Taste 
 | 
39.3
 | 
 
 | 
48.4
 | 
30.3
 | 
| 
   Chocolate 
 | 
34.5
 | 
 
 | 
31.9
 | 
37.0
 | 
| 
   Appearance 
 | 
33.6
 | 
 
 | 
26.7
 | 
40.4
 | 
| 
   Stuffing 
 | 
31.5
 | 
 
 | 
23.6
 | 
39.3
 | 
| 
   Consistency 
 | 
12.9
 | 
 
 | 
7.7
 | 
18.0
 | 
| 
   Disliked everything 
 | 
0.7
 | 
 
 | 
 | 
1.4
 | 
| 
   Liked everything 
 | 
 | 
 
 | 
 | 
 | 
| 
   Other 
 | 
 | 
 
 | 
 | 
 | 
| 
   Hard to answer 
 | 
 | 
 
 | 
 | 
 | 
| 
   #Total cases 
 | 
150
 | 
 
 | 
70
 | 
80
 | 
| 
 Likes. SDF456 
 | 
| 
   Nuts 
 | 
63.3
 | 
 
 | 
62.1
 | 
64.4
 | 
| 
   Taste 
 | 
31.6
 | 
 
 | 
35.2
 | 
28.0
 | 
| 
   Appearance 
 | 
30.3
 | 
 
 | 
28.8
 | 
31.8
 | 
| 
   Chocolate 
 | 
27.2
 | 
 
 | 
27.9
 | 
26.4
 | 
| 
   Stuffing 
 | 
21.5
 | 
 
 | 
14.3
 | 
28.7
 | 
| 
   Consistency 
 | 
8.2
 | 
 
 | 
1.7
 | 
14.7
 | 
| 
   Disliked everything 
 | 
2.9
 | 
 
 | 
3.3
 | 
2.5
 | 
| 
   Other 
 | 
1.0
 | 
 
 | 
 | 
1.9
 | 
| 
   Liked everything 
 | 
 | 
 
 | 
 | 
 | 
| 
   Hard to answer 
 | 
 | 
 
 | 
 | 
 | 
| 
   #Total cases 
 | 
150
 | 
 
 | 
70
 | 
80
 | 
 
Side-by-side variables comparison
To make side-by-side comparison we use “|” to suppress variable
labels and put these labels to the statistic labels. Statistics labels
we place in columns with tab_pivot.
product_test %>% 
    tab_cols(total(), age_cat) %>% 
    tab_weight(wgt) %>% 
    # '|' is needed to prevent automatic labels creation from argument
    tab_cells("|" = unvr(mrset(a1_1 %to% a1_6))) %>% 
    tab_stat_cpct(label = var_lab(a1_1)) %>% 
    tab_cells("|" = unvr(mrset(b1_1 %to% b1_6))) %>% 
    tab_stat_cpct(label = var_lab(b1_1)) %>% 
    tab_pivot(stat_position = "inside_columns") %>% 
    tab_caption("Side-by-side variables comparison")
| 
Side-by-side variables comparison
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Age 
 | 
| 
 | 
 Likes. VSX123 
 | 
 
 | 
 Likes. SDF456 
 | 
 
 | 
 18 - 25 
 | 
 
 | 
 26 - 35 
 | 
| 
 | 
 | 
 
 | 
 | 
 
 | 
 Likes. VSX123 
 | 
 Likes. SDF456 
 | 
 
 | 
 Likes. VSX123 
 | 
 Likes. SDF456 
 | 
| 
 Liked everything 
 | 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
 
 | 
 | 
 | 
| 
 Disliked everything 
 | 
0.7
 | 
 
 | 
2.9
 | 
 
 | 
 | 
3.3
 | 
 
 | 
1.4
 | 
2.5
 | 
| 
 Chocolate 
 | 
34.5
 | 
 
 | 
27.2
 | 
 
 | 
31.9
 | 
27.9
 | 
 
 | 
37.0
 | 
26.4
 | 
| 
 Appearance 
 | 
33.6
 | 
 
 | 
30.3
 | 
 
 | 
26.7
 | 
28.8
 | 
 
 | 
40.4
 | 
31.8
 | 
| 
 Taste 
 | 
39.3
 | 
 
 | 
31.6
 | 
 
 | 
48.4
 | 
35.2
 | 
 
 | 
30.3
 | 
28.0
 | 
| 
 Stuffing 
 | 
31.5
 | 
 
 | 
21.5
 | 
 
 | 
23.6
 | 
14.3
 | 
 
 | 
39.3
 | 
28.7
 | 
| 
 Nuts 
 | 
68.0
 | 
 
 | 
63.3
 | 
 
 | 
82.5
 | 
62.1
 | 
 
 | 
53.7
 | 
64.4
 | 
| 
 Consistency 
 | 
12.9
 | 
 
 | 
8.2
 | 
 
 | 
7.7
 | 
1.7
 | 
 
 | 
18.0
 | 
14.7
 | 
| 
 Other 
 | 
 | 
 
 | 
1.0
 | 
 
 | 
 | 
 | 
 
 | 
 | 
1.9
 | 
| 
 Hard to answer 
 | 
 | 
 
 | 
 | 
 
 | 
 | 
 | 
 
 | 
 | 
 | 
| 
 #Total cases 
 | 
150
 | 
 
 | 
150
 | 
 
 | 
70
 | 
70
 | 
 
 | 
80
 | 
80
 | 
 
Multiple tables in the loop with knitr
To make the task more practical we will create table with means for
variables which have more than 6 unique elements. For other variables we
will calculate column percent table. Note that you need to set
results='asis' in the chunk options.
# here we specify dataset and banner
banner = mtcars %>%
    tab_cols(total(), am)
for(each in colnames(mtcars)){
    # note ..$ which is used for indirect reference to variable
    # specify variable
    curr_table = banner %>% 
        tab_cells(..$each)
    # calculate statistics
    if(length(unique(mtcars[[each]]))>6){
        curr_table = curr_table %>% 
            tab_stat_mean_sd_n() %>% 
            tab_pivot() %>% 
            significance_means()
    } else {
        curr_table = curr_table %>% 
            tab_stat_cpct() %>% 
            tab_pivot() %>% 
            significance_cpct()
    }
    # finalize table
    curr_table %>% 
        tab_caption("Variable name: ", each) %>% 
        htmlTable() %>% 
        print()
}
| 
Variable name: mpg
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Miles/(US) gallon 
 | 
| 
   Mean 
 | 
20.1 
 | 
 
 | 
17.1 
 | 
 
 | 
24.4 A
 | 
| 
   Std. dev. 
 | 
6.0 
 | 
 
 | 
3.8 
 | 
 
 | 
6.2  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0 
 | 
 
 | 
13.0  
 | 
| 
Variable name: cyl
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Number of cylinders 
 | 
| 
   4 
 | 
34.4 
 | 
 
 | 
15.8  
 | 
 
 | 
61.5 A
 | 
| 
   6 
 | 
21.9 
 | 
 
 | 
21.1  
 | 
 
 | 
23.1  
 | 
| 
   8 
 | 
43.8 
 | 
 
 | 
63.2 B
 | 
 
 | 
15.4  
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
19  
 | 
 
 | 
13  
 | 
| 
Variable name: disp
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Displacement (cu.in.) 
 | 
| 
   Mean 
 | 
230.7 
 | 
 
 | 
290.4 B
 | 
 
 | 
143.5 
 | 
| 
   Std. dev. 
 | 
123.9 
 | 
 
 | 
110.2  
 | 
 
 | 
87.2 
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0 
 | 
| 
Variable name: hp
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Gross horsepower 
 | 
| 
   Mean 
 | 
146.7 
 | 
 
 | 
160.3 
 | 
 
 | 
126.8 
 | 
| 
   Std. dev. 
 | 
68.6 
 | 
 
 | 
53.9 
 | 
 
 | 
84.1 
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0 
 | 
 
 | 
13.0 
 | 
| 
Variable name: drat
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Rear axle ratio 
 | 
| 
   Mean 
 | 
3.6 
 | 
 
 | 
3.3 
 | 
 
 | 
4.0 A
 | 
| 
   Std. dev. 
 | 
0.5 
 | 
 
 | 
0.4 
 | 
 
 | 
0.4  
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0 
 | 
 
 | 
13.0  
 | 
| 
Variable name: wt
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Weight (1000 lbs) 
 | 
| 
   Mean 
 | 
3.2 
 | 
 
 | 
3.8 B
 | 
 
 | 
2.4 
 | 
| 
   Std. dev. 
 | 
1.0 
 | 
 
 | 
0.8  
 | 
 
 | 
0.6 
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0  
 | 
 
 | 
13.0 
 | 
| 
Variable name: qsec
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 1/4 mile time 
 | 
| 
   Mean 
 | 
17.8 
 | 
 
 | 
18.2 
 | 
 
 | 
17.4 
 | 
| 
   Std. dev. 
 | 
1.8 
 | 
 
 | 
1.8 
 | 
 
 | 
1.8 
 | 
| 
   Unw. valid N 
 | 
32.0 
 | 
 
 | 
19.0 
 | 
 
 | 
13.0 
 | 
| 
Variable name: vs
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Engine 
 | 
| 
   V-engine 
 | 
56.2 
 | 
 
 | 
63.2 
 | 
 
 | 
46.2 
 | 
| 
   Straight engine 
 | 
43.8 
 | 
 
 | 
36.8 
 | 
 
 | 
53.8 
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
19 
 | 
 
 | 
13 
 | 
| 
Variable name: am
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Transmission 
 | 
| 
   Automatic 
 | 
59.4 
 | 
 
 | 
100.0 
 | 
 
 | 
 | 
| 
   Manual 
 | 
40.6 
 | 
 
 | 
 | 
 
 | 
100.0 
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
19 
 | 
 
 | 
13 
 | 
| 
Variable name: gear
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Number of forward gears 
 | 
| 
   3 
 | 
46.9 
 | 
 
 | 
78.9 
 | 
 
 | 
 | 
| 
   4 
 | 
37.5 
 | 
 
 | 
21.1 
 | 
 
 | 
61.5 A
 | 
| 
   5 
 | 
15.6 
 | 
 
 | 
 | 
 
 | 
38.5  
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
19 
 | 
 
 | 
13  
 | 
| 
Variable name: carb
 | 
| 
 | 
 #Total 
 | 
 
 | 
 Transmission 
 | 
| 
 | 
 | 
 
 | 
 Automatic 
 | 
 
 | 
 Manual 
 | 
| 
 | 
 | 
 
 | 
 A 
 | 
 
 | 
 B 
 | 
| 
 Number of carburetors 
 | 
| 
   1 
 | 
21.9 
 | 
 
 | 
15.8 
 | 
 
 | 
30.8 
 | 
| 
   2 
 | 
31.2 
 | 
 
 | 
31.6 
 | 
 
 | 
30.8 
 | 
| 
   3 
 | 
9.4 
 | 
 
 | 
15.8 
 | 
 
 | 
 | 
| 
   4 
 | 
31.2 
 | 
 
 | 
36.8 
 | 
 
 | 
23.1 
 | 
| 
   6 
 | 
3.1 
 | 
 
 | 
 | 
 
 | 
7.7 
 | 
| 
   8 
 | 
3.1 
 | 
 
 | 
 | 
 
 | 
7.7 
 | 
| 
   #Total cases 
 | 
32 
 | 
 
 | 
19 
 | 
 
 | 
13 
 |