4 Example 2

4.1 Double entry table

tab2 <- crosstable(mtcars, c(mpg, cyl), by=gear, 
         total="both")
tab2 <- flextable(tab2)
tab2

.id

label

variable

3

4

5

Total

mpg

mpg

Min / Max

10.4 / 21.5

17.8 / 33.9

15.0 / 30.4

10.4 / 33.9

mpg

mpg

Med [IQR]

15.5 [14.5;18.4]

22.8 [21.0;28.1]

19.7 [15.8;26.0]

19.2 [15.4;22.8]

mpg

mpg

Mean (std)

16.1 (3.4)

24.5 (5.3)

21.4 (6.7)

20.1 (6.0)

mpg

mpg

N (NA)

15 (0)

12 (0)

5 (0)

32 (0)

cyl

cyl

4

1 (9.09%)

8 (72.73%)

2 (18.18%)

11 (34.38%)

cyl

cyl

6

2 (28.57%)

4 (57.14%)

1 (14.29%)

7 (21.88%)

cyl

cyl

8

12 (85.71%)

0 (0%)

2 (14.29%)

14 (43.75%)

cyl

cyl

Total

15 (46.88%)

12 (37.50%)

5 (15.62%)

32 (100.00%)

tab2 <- crosstable(mtcars, c(mpg, cyl), by=gear, 
         total="both")
tab2 <- flextable(tab2, 
   col_keys=c("label", "variable", "3", "4", "5", "Total"))
tab2 <- merge_v(tab2, j="label")
tab2 <- add_header_row(tab2, values=c("","Gear",""), 
         colwidths=c(2,3,1))
tab2 <- flextable::align(tab2, part="all", align="center")
tab2 <- mk_par(tab2, j=1, i=2, 
  value=as_paragraph(as_chunk("Variable")), part="header")
tab2 <- mk_par(tab2, j=2, 
  value=as_paragraph(as_chunk("Statistic")), part="header")
tab2 <- width(tab2, width=2)
tab2 <- vline(tab2, j=c(2,5))
tab2 <- hline(tab2, i=4, border=fp_border_default())
tab2

Gear

Variable

Statistic

3

4

5

Total

mpg

Min / Max

10.4 / 21.5

17.8 / 33.9

15.0 / 30.4

10.4 / 33.9

Med [IQR]

15.5 [14.5;18.4]

22.8 [21.0;28.1]

19.7 [15.8;26.0]

19.2 [15.4;22.8]

Mean (std)

16.1 (3.4)

24.5 (5.3)

21.4 (6.7)

20.1 (6.0)

N (NA)

15 (0)

12 (0)

5 (0)

32 (0)

cyl

4

1 (9.09%)

8 (72.73%)

2 (18.18%)

11 (34.38%)

6

2 (28.57%)

4 (57.14%)

1 (14.29%)

7 (21.88%)

8

12 (85.71%)

0 (0%)

2 (14.29%)

14 (43.75%)

Total

15 (46.88%)

12 (37.50%)

5 (15.62%)

32 (100.00%)