Here we are exploring the different themes that can be used with tableHTML

library(tableHTML)

Specifying a theme

Although the package has been designed so that it gives the utmost freedom to the user to style the HTML table as they please, some themes have been included for those who need something quick and nice. The package offers three themes for now: scientific, rshiny-blue, and colorize. To use them, you need to use the add_theme function.

Notice: When working with themes you can still add extra css (using the add_css_* family from below) but you will not be able to overwrite the styling that is there e.g. to change the width of the lines.

scientific

This is the scientifc theme where the table design resembles scientific tables for publishing.

tableHTML(mtcars, widths = c(140, rep(50, 11))) %>%
 add_theme('scientific')
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18 0 0 3 3
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318 150 2.76 3.52 16.87 0 0 3 2
AMC Javelin 15.2 8 304 150 3.15 3.435 17.3 0 0 3 2
Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79 66 4.08 1.935 18.9 1 1 4 1
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8
Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2


tableHTML(mtcars,
          rownames = FALSE,
          widths = c(140, rep(50, 11)),
          row_groups = list(c(10, 10, 12), c('Group 1', 'Group 2', 'Group 3')),
          second_headers = list(c(3, 4, 5), c('col1', 'col2', 'col3'))) %>%
  add_theme('scientific')
col1 col2 col3
mpg cyl disp hp drat wt qsec vs am gear carb
Group 1 21 6 160 110 3.9 2.62 16.46 0 1 4 4
21 6 160 110 3.9 2.875 17.02 0 1 4 4
22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
Group 2 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
15.2 8 275.8 180 3.07 3.78 18 0 0 3 3
10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
10.4 8 460 215 3 5.424 17.82 0 0 3 4
14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1
30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Group 3 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1
15.5 8 318 150 2.76 3.52 16.87 0 0 3 2
15.2 8 304 150 3.15 3.435 17.3 0 0 3 2
13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
27.3 4 79 66 4.08 1.935 18.9 1 1 4 1
26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
15 8 301 335 3.54 3.57 14.6 0 1 5 8
21.4 4 121 109 4.11 2.78 18.6 1 1 4 2

rshiny-blue

This theme matches the color of the standard shiny apps.

tableHTML(mtcars, widths = c(140, rep(50, 11))) %>%
 add_theme('rshiny-blue')
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18 0 0 3 3
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318 150 2.76 3.52 16.87 0 0 3 2
AMC Javelin 15.2 8 304 150 3.15 3.435 17.3 0 0 3 2
Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79 66 4.08 1.935 18.9 1 1 4 1
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8
Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2


tableHTML(mtcars,
          rownames = FALSE,
          widths = c(140, rep(50, 11)),
          row_groups = list(c(10, 10, 12), c('Group 1', 'Group 2', 'Group 3')),
          second_headers = list(c(3, 4, 5), c('col1', 'col2', 'col3'))) %>%
  add_theme('rshiny-blue')
col1 col2 col3
mpg cyl disp hp drat wt qsec vs am gear carb
Group 1 21 6 160 110 3.9 2.62 16.46 0 1 4 4
21 6 160 110 3.9 2.875 17.02 0 1 4 4
22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
Group 2 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
15.2 8 275.8 180 3.07 3.78 18 0 0 3 3
10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
10.4 8 460 215 3 5.424 17.82 0 0 3 4
14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1
30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Group 3 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1
15.5 8 318 150 2.76 3.52 16.87 0 0 3 2
15.2 8 304 150 3.15 3.435 17.3 0 0 3 2
13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
27.3 4 79 66 4.08 1.935 18.9 1 1 4 1
26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
15 8 301 335 3.54 3.57 14.6 0 1 5 8
21.4 4 121 109 4.11 2.78 18.6 1 1 4 2

colorize

This theme is used to create MS Excel-like tables (with any color you like). You can also use it to highlight specific rows (usually corresponding to some aggregation function, for example totals or averages). The arguments that can be used with the colorize theme are color, total_rows, and id_column. The default color is steelblue and by default no rows are chosen to be highlighted. You can also highlight the first column with the id_column argument. The documentation can be found at ?add_theme_colorize.

df <- mtcars[, 1:6]
df %>%
  tableHTML(widths = c(150, rep(70, ncol(df))), rownames = TRUE) %>%
  add_theme('colorize')
mpg cyl disp hp drat wt
Mazda RX4 21 6 160 110 3.9 2.62
Mazda RX4 Wag 21 6 160 110 3.9 2.875
Datsun 710 22.8 4 108 93 3.85 2.32
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.44
Valiant 18.1 6 225 105 2.76 3.46
Duster 360 14.3 8 360 245 3.21 3.57
Merc 240D 24.4 4 146.7 62 3.69 3.19
Merc 230 22.8 4 140.8 95 3.92 3.15
Merc 280 19.2 6 167.6 123 3.92 3.44
Merc 280C 17.8 6 167.6 123 3.92 3.44
Merc 450SE 16.4 8 275.8 180 3.07 4.07
Merc 450SL 17.3 8 275.8 180 3.07 3.73
Merc 450SLC 15.2 8 275.8 180 3.07 3.78
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25
Lincoln Continental 10.4 8 460 215 3 5.424
Chrysler Imperial 14.7 8 440 230 3.23 5.345
Fiat 128 32.4 4 78.7 66 4.08 2.2
Honda Civic 30.4 4 75.7 52 4.93 1.615
Toyota Corolla 33.9 4 71.1 65 4.22 1.835
Toyota Corona 21.5 4 120.1 97 3.7 2.465
Dodge Challenger 15.5 8 318 150 2.76 3.52
AMC Javelin 15.2 8 304 150 3.15 3.435
Camaro Z28 13.3 8 350 245 3.73 3.84
Pontiac Firebird 19.2 8 400 175 3.08 3.845
Fiat X1-9 27.3 4 79 66 4.08 1.935
Porsche 914-2 26 4 120.3 91 4.43 2.14
Lotus Europa 30.4 4 95.1 113 3.77 1.513
Ford Pantera L 15.8 8 351 264 4.22 3.17
Ferrari Dino 19.7 6 145 175 3.62 2.77
Maserati Bora 15 8 301 335 3.54 3.57
Volvo 142E 21.4 4 121 109 4.11 2.78


df <- mtcars[, 1:6]
df %>%
  tableHTML(widths = c(150, rep(70, ncol(df))), rownames = TRUE) %>%
  add_theme('colorize', color = 'darkgreen')
mpg cyl disp hp drat wt
Mazda RX4 21 6 160 110 3.9 2.62
Mazda RX4 Wag 21 6 160 110 3.9 2.875
Datsun 710 22.8 4 108 93 3.85 2.32
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.44
Valiant 18.1 6 225 105 2.76 3.46
Duster 360 14.3 8 360 245 3.21 3.57
Merc 240D 24.4 4 146.7 62 3.69 3.19
Merc 230 22.8 4 140.8 95 3.92 3.15
Merc 280 19.2 6 167.6 123 3.92 3.44
Merc 280C 17.8 6 167.6 123 3.92 3.44
Merc 450SE 16.4 8 275.8 180 3.07 4.07
Merc 450SL 17.3 8 275.8 180 3.07 3.73
Merc 450SLC 15.2 8 275.8 180 3.07 3.78
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25
Lincoln Continental 10.4 8 460 215 3 5.424
Chrysler Imperial 14.7 8 440 230 3.23 5.345
Fiat 128 32.4 4 78.7 66 4.08 2.2
Honda Civic 30.4 4 75.7 52 4.93 1.615
Toyota Corolla 33.9 4 71.1 65 4.22 1.835
Toyota Corona 21.5 4 120.1 97 3.7 2.465
Dodge Challenger 15.5 8 318 150 2.76 3.52
AMC Javelin 15.2 8 304 150 3.15 3.435
Camaro Z28 13.3 8 350 245 3.73 3.84
Pontiac Firebird 19.2 8 400 175 3.08 3.845
Fiat X1-9 27.3 4 79 66 4.08 1.935
Porsche 914-2 26 4 120.3 91 4.43 2.14
Lotus Europa 30.4 4 95.1 113 3.77 1.513
Ford Pantera L 15.8 8 351 264 4.22 3.17
Ferrari Dino 19.7 6 145 175 3.62 2.77
Maserati Bora 15 8 301 335 3.54 3.57
Volvo 142E 21.4 4 121 109 4.11 2.78


df <- mtcars[, 1:6]
df['Mean', ] <- (df %>% apply(2, mean))
df %>%
  tableHTML(widths = c(150, rep(70, ncol(df))), rownames = TRUE) %>%
  add_theme('colorize', color = c('steelblue', 'red'))
mpg cyl disp hp drat wt
Mazda RX4 21 6 160 110 3.9 2.62
Mazda RX4 Wag 21 6 160 110 3.9 2.875
Datsun 710 22.8 4 108 93 3.85 2.32
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.44
Valiant 18.1 6 225 105 2.76 3.46
Duster 360 14.3 8 360 245 3.21 3.57
Merc 240D 24.4 4 146.7 62 3.69 3.19
Merc 230 22.8 4 140.8 95 3.92 3.15
Merc 280 19.2 6 167.6 123 3.92 3.44
Merc 280C 17.8 6 167.6 123 3.92 3.44
Merc 450SE 16.4 8 275.8 180 3.07 4.07
Merc 450SL 17.3 8 275.8 180 3.07 3.73
Merc 450SLC 15.2 8 275.8 180 3.07 3.78
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25
Lincoln Continental 10.4 8 460 215 3 5.424
Chrysler Imperial 14.7 8 440 230 3.23 5.345
Fiat 128 32.4 4 78.7 66 4.08 2.2
Honda Civic 30.4 4 75.7 52 4.93 1.615
Toyota Corolla 33.9 4 71.1 65 4.22 1.835
Toyota Corona 21.5 4 120.1 97 3.7 2.465
Dodge Challenger 15.5 8 318 150 2.76 3.52
AMC Javelin 15.2 8 304 150 3.15 3.435
Camaro Z28 13.3 8 350 245 3.73 3.84
Pontiac Firebird 19.2 8 400 175 3.08 3.845
Fiat X1-9 27.3 4 79 66 4.08 1.935
Porsche 914-2 26 4 120.3 91 4.43 2.14
Lotus Europa 30.4 4 95.1 113 3.77 1.513
Ford Pantera L 15.8 8 351 264 4.22 3.17
Ferrari Dino 19.7 6 145 175 3.62 2.77
Maserati Bora 15 8 301 335 3.54 3.57
Volvo 142E 21.4 4 121 109 4.11 2.78
Mean 20.090625 6.1875 230.721875 146.6875 3.5965625 3.21725


Here we are hightlighting the last row which contains the average of the columns.

df <- mtcars[, 1:6]
df['Mean', ] <- (df %>% apply(2, mean))
df %>%
  tableHTML(widths = c(150, rep(70, ncol(df))), rownames = TRUE) %>%
  add_theme('colorize', color = c('steelblue', 'red'), total_rows = nrow(df))
mpg cyl disp hp drat wt
Mazda RX4 21 6 160 110 3.9 2.62
Mazda RX4 Wag 21 6 160 110 3.9 2.875
Datsun 710 22.8 4 108 93 3.85 2.32
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.44
Valiant 18.1 6 225 105 2.76 3.46
Duster 360 14.3 8 360 245 3.21 3.57
Merc 240D 24.4 4 146.7 62 3.69 3.19
Merc 230 22.8 4 140.8 95 3.92 3.15
Merc 280 19.2 6 167.6 123 3.92 3.44
Merc 280C 17.8 6 167.6 123 3.92 3.44
Merc 450SE 16.4 8 275.8 180 3.07 4.07
Merc 450SL 17.3 8 275.8 180 3.07 3.73
Merc 450SLC 15.2 8 275.8 180 3.07 3.78
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25
Lincoln Continental 10.4 8 460 215 3 5.424
Chrysler Imperial 14.7 8 440 230 3.23 5.345
Fiat 128 32.4 4 78.7 66 4.08 2.2
Honda Civic 30.4 4 75.7 52 4.93 1.615
Toyota Corolla 33.9 4 71.1 65 4.22 1.835
Toyota Corona 21.5 4 120.1 97 3.7 2.465
Dodge Challenger 15.5 8 318 150 2.76 3.52
AMC Javelin 15.2 8 304 150 3.15 3.435
Camaro Z28 13.3 8 350 245 3.73 3.84
Pontiac Firebird 19.2 8 400 175 3.08 3.845
Fiat X1-9 27.3 4 79 66 4.08 1.935
Porsche 914-2 26 4 120.3 91 4.43 2.14
Lotus Europa 30.4 4 95.1 113 3.77 1.513
Ford Pantera L 15.8 8 351 264 4.22 3.17
Ferrari Dino 19.7 6 145 175 3.62 2.77
Maserati Bora 15 8 301 335 3.54 3.57
Volvo 142E 21.4 4 121 109 4.11 2.78
Mean 20.090625 6.1875 230.721875 146.6875 3.5965625 3.21725

Totals with add_theme_colorize

Instead of using the umbrella function add_theme, you could also explicitly use add_theme_colorize. The two functions are identical in terms of the output. To see the documentation visit ?add_theme_colorize.

# one total row
x1 <- sample(1:100, 12)
x2 <- sample(1:100, 12)
x3 <- sample(1:100, 12)

df <- data.frame(Month = month.abb, x1, x2, x3,
                 stringsAsFactors = FALSE)

df[nrow(df) + 1, ] <- c('Total', sum(x1), sum(x2), sum(x3))

df %>%
  tableHTML(widths = rep(50, 4), rownames = FALSE) %>%
  add_theme_colorize(color = 'darkred', total_rows = nrow(df))
Month x1 x2 x3
Jan 77 9 75
Feb 39 32 53
Mar 26 21 19
Apr 37 55 52
May 58 13 84
Jun 50 62 65
Jul 4 100 7
Aug 49 25 60
Sep 57 39 94
Oct 94 90 27
Nov 23 27 58
Dec 29 74 63
Total 543 547 657


df_q <- rbind(
  df[1:3, ],
  c('Sum1', sum(x1[1:3]), sum(x2[1:3]), sum(x3[1:3])),
  df[4:6, ],
  c('Sum2', sum(x1[4:6]), sum(x2[4:6]), sum(x3[4:6])),
  df[7:9, ],
  c('Sum3', sum(x1[7:9]), sum(x2[7:9]), sum(x3[7:9])),
  df[10:12, ],
  c('Sum4', sum(x1[10:12]), sum(x2[10:12]), sum(x3[10:12])))

# Two colors and an id_column
df_q %>%
  tableHTML(widths = rep(50, 5),
            rownames = FALSE,
            row_groups = list(c(4, 4, 4, 4),
                              c('Q1', 'Q2', 'Q3', 'Q4'))) %>%
  add_theme_colorize(color = c('pink3', 'yellow2'),
                     total_rows = c(4, 8, 12, 16), id_column = TRUE)
Month x1 x2 x3
Q1 Jan 77 9 75
Feb 39 32 53
Mar 26 21 19
Sum1 142 62 147
Q2 Apr 37 55 52
May 58 13 84
Jun 50 62 65
Sum2 145 130 201
Q3 Jul 4 100 7
Aug 49 25 60
Sep 57 39 94
Sum3 110 164 161
Q4 Oct 94 90 27
Nov 23 27 58
Dec 29 74 63
Sum4 146 191 148