2 Tables

2.1 Some packages to build tables in R

2.2 Table parts

  • Ref.: Gohel, D. Using the flextable R package, Chapter 3

2.3 Merging cells

  • merge_at: Merge flextable cells into a single one. All rows and columns must be consecutive.
  • merge_h: Merge flextable cells horizontally
  • merge_v: Merge flextable cells vertically

2.4 Example - merge

tab <- flextable(head(mtcars[,c(1:8)]))
tab <- merge_v(tab, j=c("cyl","vs"))
tab

mpg

cyl

disp

hp

drat

wt

qsec

vs

21.0

6

160

110

3.90

2.620

16.46

0

21.0

160

110

3.90

2.875

17.02

22.8

4

108

93

3.85

2.320

18.61

1

21.4

6

258

110

3.08

3.215

19.44

18.7

8

360

175

3.15

3.440

17.02

0

18.1

6

225

105

2.76

3.460

20.22

1

tab <- flextable(head(mtcars[,c(1:8)]))
tab <- merge_at(tab, i=1:2, j=1, part="body")
tab

mpg

cyl

disp

hp

drat

wt

qsec

vs

21.0

6

160

110

3.90

2.620

16.46

0

6

160

110

3.90

2.875

17.02

0

22.8

4

108

93

3.85

2.320

18.61

1

21.4

6

258

110

3.08

3.215

19.44

1

18.7

8

360

175

3.15

3.440

17.02

0

18.1

6

225

105

2.76

3.460

20.22

1

2.5 Define displayed values and mixed content

tab <- flextable(head(mtcars[,c(1:8)]))
tab <- mk_par(tab, j=1, 
    value=as_paragraph("Miles/(US) gallon"), 
        part="header")
tab

Miles/(US) gallon

cyl

disp

hp

drat

wt

qsec

vs

21.0

6

160

110

3.90

2.620

16.46

0

21.0

6

160

110

3.90

2.875

17.02

0

22.8

4

108

93

3.85

2.320

18.61

1

21.4

6

258

110

3.08

3.215

19.44

1

18.7

8

360

175

3.15

3.440

17.02

0

18.1

6

225

105

2.76

3.460

20.22

1

  • Column width and text alignment
tab <- flextable(head(mtcars[,c(1:8)]))
tab <- mk_par(tab, j=1, 
    value=as_paragraph("Miles/(US) gallon"), 
        part="header")
tab <- width(tab, j=1, width=2) # Column width
tab <- flextable::align(tab, part="all", align="center") # Text alignment
tab

Miles/(US) gallon

cyl

disp

hp

drat

wt

qsec

vs

21.0

6

160

110

3.90

2.620

16.46

0

21.0

6

160

110

3.90

2.875

17.02

0

22.8

4

108

93

3.85

2.320

18.61

1

21.4

6

258

110

3.08

3.215

19.44

1

18.7

8

360

175

3.15

3.440

17.02

0

18.1

6

225

105

2.76

3.460

20.22

1

2.6 Highlights

tab <- flextable(head(mtcars[,c(1:8)]))
tab <- highlight(tab, j="hp", i = ~ hp > 100, color="green")
tab <- append_chunks(tab, i = ~ mpg < 20, j="cyl",
      as_chunk("***", props=fp_text_default(color="red")))
tab

mpg

cyl

disp

hp

drat

wt

qsec

vs

21.0

6

160

110

3.90

2.620

16.46

0

21.0

6

160

110

3.90

2.875

17.02

0

22.8

4

108

93

3.85

2.320

18.61

1

21.4

6

258

110

3.08

3.215

19.44

1

18.7

8***

360

175

3.15

3.440

17.02

0

18.1

6***

225

105

2.76

3.460

20.22

1