summary_row on all columns

I'm working to build a shiny app using the gt package for summary tables.

My issue is that the app requires users to upload a dataframe. Each file will have a different number of columns and column names. The summary_rows function requires a "columns" argument, but with the file changing every time the app is run, I cannot specify the columns to summarize.

Example:

names(df1) <- c("A", "B", "C", "D", "E")

summary_rows(
groups = TRUE,
columns = vars("D", "E"),
fns = list(min = ~min(.)))

names(df2) <- c("A", "B", "C", "F", "G", "H")

summary_rows(
groups = TRUE,
columns = vars("F", "G", "H"),
fns = list(min = ~min(.)))

Is there a way to indicate that all columns should be summarized? I have tried to save the names as a vector and used that with and without the vars function but that doesn't seem to work. Since this is a new package I'm not sure if this feature as been implemented yet.

I would really like to use the gt package because it is simple to use and the output is nice, but if this is not possible with gt is there another package others would recommend?

Hi @MackenzieKolev - welcome!

Do you have a groupname_col set each time? That should be straightforward, as that is a string

Here is my code -- does it work for your situation?

suppressPackageStartupMessages(library(tidyverse))
library(gt)

columns <- c("mpg", "qsec", "gear")

mtcars %>%
  rownames_to_column() %>%
  gt(groupname_col = "cyl") %>%
  summary_rows(groups = TRUE, columns = vars(columns), fns = list(min = ~min(.)))

mpg

disp

hp

drat

wt

qsec

vs

am

gear

carb

6

Mazda RX4

21.0

160.0

110

3.90

2.620

16.46

0

1

4

4

Mazda RX4 Wag

21.0

160.0

110

3.90

2.875

17.02

0

1

4

4

Hornet 4 Drive

21.4

258.0

110

3.08

3.215

19.44

1

0

3

1

Valiant

18.1

225.0

105

2.76

3.460

20.22

1

0

3

1

Merc 280

19.2

167.6

123

3.92

3.440

18.30

1

0

4

4

Merc 280C

17.8

167.6

123

3.92

3.440

18.90

1

0

4

4

Ferrari Dino

19.7

145.0

175

3.62

2.770

15.50

0

1

5

6

min

17.80

15.50

3.00

4

Datsun 710

22.8

108.0

93

3.85

2.320

18.61

1

1

4

1

Merc 240D

24.4

146.7

62

3.69

3.190

20.00

1

0

4

2

Merc 230

22.8

140.8

95

3.92

3.150

22.90

1

0

4

2

Fiat 128

32.4

78.7

66

4.08

2.200

19.47

1

1

4

1

Honda Civic

30.4

75.7

52

4.93

1.615

18.52

1

1

4

2

Toyota Corolla

33.9

71.1

65

4.22

1.835

19.90

1

1

4

1

Toyota Corona

21.5

120.1

97

3.70

2.465

20.01

1

0

3

1

Fiat X1-9

27.3

79.0

66

4.08

1.935

18.90

1

1

4

1

Porsche 914-2

26.0

120.3

91

4.43

2.140

16.70

0

1

5

2

Lotus Europa

30.4

95.1

113

3.77

1.513

16.90

1

1

5

2

Volvo 142E

21.4

121.0

109

4.11

2.780

18.60

1

1

4

2

min

21.40

16.70

3.00

8

Hornet Sportabout

18.7

360.0

175

3.15

3.440

17.02

0

0

3

2

Duster 360

14.3

360.0

245

3.21

3.570

15.84

0

0

3

4

Merc 450SE

16.4

275.8

180

3.07

4.070

17.40

0

0

3

3

Merc 450SL

17.3

275.8

180

3.07

3.730

17.60

0

0

3

3

Merc 450SLC

15.2

275.8

180

3.07

3.780

18.00

0

0

3

3

Cadillac Fleetwood

10.4

472.0

205

2.93

5.250

17.98

0

0

3

4

Lincoln Continental

10.4

460.0

215

3.00

5.424

17.82

0

0

3

4

Chrysler Imperial

14.7

440.0

230

3.23

5.345

17.42

0

0

3

4

Dodge Challenger

15.5

318.0

150

2.76

3.520

16.87

0

0

3

2

AMC Javelin

15.2

304.0

150

3.15

3.435

17.30

0

0

3

2

Camaro Z28

13.3

350.0

245

3.73

3.840

15.41

0

0

3

4

Pontiac Firebird

19.2

400.0

175

3.08

3.845

17.05

0

0

3

2

Ford Pantera L

15.8

351.0

264

4.22

3.170

14.50

0

1

5

4

Maserati Bora

15.0

301.0

335

3.54

3.570

14.60

0

1

5

8

min

10.40

14.50

3.00

Created on 2019-08-13 by the reprex package (v0.3.0)

Thanks that solved my problem!

As a follow up to yesterday's post, I found with my data. the summary_rows() function will only work if the number of columns is >= 18. My data set had 22 columns and it seems as though summary_rows cannot handle that many columns at once. I have reported the issue on GitHub.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.