Air Quality Data Analysis

SK ENAMUL HUDA

Individula Assignement

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(gtsummary)
airquality %>% 
tbl_summary()
Characteristic N = 1531
Ozone 32 (18, 64)
    Unknown 37
Solar.R 205 (115, 259)
    Unknown 7
Wind 9.7 (7.4, 11.5)
Temp 79 (72, 85)
Month
    5 31 (20%)
    6 30 (20%)
    7 31 (20%)
    8 31 (20%)
    9 30 (20%)
Day 16 (8, 23)
1 Median (Q1, Q3); n (%)
airquality <-  airquality %>% 
  select(Wind, Temp, Ozone, Solar.R)
airquality
##     Wind Temp Ozone Solar.R
## 1    7.4   67    41     190
## 2    8.0   72    36     118
## 3   12.6   74    12     149
## 4   11.5   62    18     313
## 5   14.3   56    NA      NA
## 6   14.9   66    28      NA
## 7    8.6   65    23     299
## 8   13.8   59    19      99
## 9   20.1   61     8      19
## 10   8.6   69    NA     194
## 11   6.9   74     7      NA
## 12   9.7   69    16     256
## 13   9.2   66    11     290
## 14  10.9   68    14     274
## 15  13.2   58    18      65
## 16  11.5   64    14     334
## 17  12.0   66    34     307
## 18  18.4   57     6      78
## 19  11.5   68    30     322
## 20   9.7   62    11      44
## 21   9.7   59     1       8
## 22  16.6   73    11     320
## 23   9.7   61     4      25
## 24  12.0   61    32      92
## 25  16.6   57    NA      66
## 26  14.9   58    NA     266
## 27   8.0   57    NA      NA
## 28  12.0   67    23      13
## 29  14.9   81    45     252
## 30   5.7   79   115     223
## 31   7.4   76    37     279
## 32   8.6   78    NA     286
## 33   9.7   74    NA     287
## 34  16.1   67    NA     242
## 35   9.2   84    NA     186
## 36   8.6   85    NA     220
## 37  14.3   79    NA     264
## 38   9.7   82    29     127
## 39   6.9   87    NA     273
## 40  13.8   90    71     291
## 41  11.5   87    39     323
## 42  10.9   93    NA     259
## 43   9.2   92    NA     250
## 44   8.0   82    23     148
## 45  13.8   80    NA     332
## 46  11.5   79    NA     322
## 47  14.9   77    21     191
## 48  20.7   72    37     284
## 49   9.2   65    20      37
## 50  11.5   73    12     120
## 51  10.3   76    13     137
## 52   6.3   77    NA     150
## 53   1.7   76    NA      59
## 54   4.6   76    NA      91
## 55   6.3   76    NA     250
## 56   8.0   75    NA     135
## 57   8.0   78    NA     127
## 58  10.3   73    NA      47
## 59  11.5   80    NA      98
## 60  14.9   77    NA      31
## 61   8.0   83    NA     138
## 62   4.1   84   135     269
## 63   9.2   85    49     248
## 64   9.2   81    32     236
## 65  10.9   84    NA     101
## 66   4.6   83    64     175
## 67  10.9   83    40     314
## 68   5.1   88    77     276
## 69   6.3   92    97     267
## 70   5.7   92    97     272
## 71   7.4   89    85     175
## 72   8.6   82    NA     139
## 73  14.3   73    10     264
## 74  14.9   81    27     175
## 75  14.9   91    NA     291
## 76  14.3   80     7      48
## 77   6.9   81    48     260
## 78  10.3   82    35     274
## 79   6.3   84    61     285
## 80   5.1   87    79     187
## 81  11.5   85    63     220
## 82   6.9   74    16       7
## 83   9.7   81    NA     258
## 84  11.5   82    NA     295
## 85   8.6   86    80     294
## 86   8.0   85   108     223
## 87   8.6   82    20      81
## 88  12.0   86    52      82
## 89   7.4   88    82     213
## 90   7.4   86    50     275
## 91   7.4   83    64     253
## 92   9.2   81    59     254
## 93   6.9   81    39      83
## 94  13.8   81     9      24
## 95   7.4   82    16      77
## 96   6.9   86    78      NA
## 97   7.4   85    35      NA
## 98   4.6   87    66      NA
## 99   4.0   89   122     255
## 100 10.3   90    89     229
## 101  8.0   90   110     207
## 102  8.6   92    NA     222
## 103 11.5   86    NA     137
## 104 11.5   86    44     192
## 105 11.5   82    28     273
## 106  9.7   80    65     157
## 107 11.5   79    NA      64
## 108 10.3   77    22      71
## 109  6.3   79    59      51
## 110  7.4   76    23     115
## 111 10.9   78    31     244
## 112 10.3   78    44     190
## 113 15.5   77    21     259
## 114 14.3   72     9      36
## 115 12.6   75    NA     255
## 116  9.7   79    45     212
## 117  3.4   81   168     238
## 118  8.0   86    73     215
## 119  5.7   88    NA     153
## 120  9.7   97    76     203
## 121  2.3   94   118     225
## 122  6.3   96    84     237
## 123  6.3   94    85     188
## 124  6.9   91    96     167
## 125  5.1   92    78     197
## 126  2.8   93    73     183
## 127  4.6   93    91     189
## 128  7.4   87    47      95
## 129 15.5   84    32      92
## 130 10.9   80    20     252
## 131 10.3   78    23     220
## 132 10.9   75    21     230
## 133  9.7   73    24     259
## 134 14.9   81    44     236
## 135 15.5   76    21     259
## 136  6.3   77    28     238
## 137 10.9   71     9      24
## 138 11.5   71    13     112
## 139  6.9   78    46     237
## 140 13.8   67    18     224
## 141 10.3   76    13      27
## 142 10.3   68    24     238
## 143  8.0   82    16     201
## 144 12.6   64    13     238
## 145  9.2   71    23      14
## 146 10.3   81    36     139
## 147 10.3   69     7      49
## 148 16.6   63    14      20
## 149  6.9   70    30     193
## 150 13.2   77    NA     145
## 151 14.3   75    14     191
## 152  8.0   76    18     131
## 153 11.5   68    20     223
hist(airquality$Wind, main = "Wind Distribution", xlab = "Wind", col = "lightblue", border = "black")

barplot(table(airquality$Solar.R), main = "Solar Distribution", xlab = "Solar.R", ylab = "Frequency", col = "lightgreen")

airquality <- airquality %>%
  mutate(Temp_group = case_when(
    Temp <= 70 ~ "Low",
    Temp > 70 & Temp <= 85 ~ "Medium",
    Temp > 85 ~ "High"
  ))
install.packages("tidyverse")
## Warning: package 'tidyverse' is in use and will not be installed
library(tidyverse)
airquality %>%
  tbl_summary(by = Temp)
Characteristic 56
N = 1
1
57
N = 3
1
58
N = 2
1
59
N = 2
1
61
N = 3
1
62
N = 2
1
63
N = 1
1
64
N = 2
1
65
N = 2
1
66
N = 3
1
67
N = 4
1
68
N = 4
1
69
N = 3
1
70
N = 1
1
71
N = 3
1
72
N = 3
1
73
N = 5
1
74
N = 4
1
75
N = 4
1
76
N = 9
1
77
N = 7
1
78
N = 6
1
79
N = 6
1
80
N = 5
1
81
N = 11
1
82
N = 9
1
83
N = 4
1
84
N = 5
1
85
N = 5
1
86
N = 7
1
87
N = 5
1
88
N = 3
1
89
N = 2
1
90
N = 3
1
91
N = 2
1
92
N = 5
1
93
N = 3
1
94
N = 2
1
96
N = 1
1
97
N = 1
1
Wind 14.3 (14.3, 14.3) 16.6 (8.0, 18.4) 14.1 (13.2, 14.9) 11.8 (9.7, 13.8) 12.0 (9.7, 20.1) 10.6 (9.7, 11.5) 16.6 (16.6, 16.6) 12.1 (11.5, 12.6) 8.9 (8.6, 9.2) 12.0 (9.2, 14.9) 12.9 (9.7, 15.0) 11.2 (10.6, 11.5) 9.7 (8.6, 10.3) 6.9 (6.9, 6.9) 10.9 (9.2, 11.5) 14.3 (8.0, 20.7) 11.5 (10.3, 14.3) 8.3 (6.9, 11.2) 11.8 (9.5, 13.5) 7.4 (6.3, 10.3) 13.2 (6.3, 14.9) 9.5 (8.0, 10.3) 10.6 (6.3, 11.5) 11.5 (10.9, 13.8) 9.7 (6.9, 14.9) 8.6 (8.0, 10.3) 7.7 (6.0, 9.5) 9.2 (6.3, 10.9) 8.6 (8.0, 9.2) 8.6 (7.4, 11.5) 6.9 (5.1, 7.4) 5.7 (5.1, 7.4) 5.7 (4.0, 7.4) 10.3 (8.0, 13.8) 10.9 (6.9, 14.9) 6.3 (5.7, 8.6) 4.6 (2.8, 10.9) 4.3 (2.3, 6.3) 6.3 (6.3, 6.3) 9.7 (9.7, 9.7)
Ozone NA (NA, NA) 6 (6, 6) 18 (18, 18) 10 (1, 19) 8 (4, 32) 15 (11, 18) 14 (14, 14) 14 (13, 14) 22 (20, 23) 28 (11, 34) 23 (18, 41) 22 (17, 27) 12 (7, 16) 30 (30, 30) 13 (9, 23) 36 (9, 37) 12 (11, 18) 12 (7, 16) 18 (14, 21) 20 (13, 23) 22 (21, 25) 38 (27, 45) 59 (45, 115) 20 (7, 65) 42 (32, 48) 23 (16, 29) 64 (40, 64) 61 (32, 135) 56 (42, 86) 63 (50, 78) 57 (43, 73) 80 (77, 82) 104 (85, 122) 89 (71, 110) 96 (96, 96) 97 (78, 97) 82 (73, 91) 102 (85, 118) 84 (84, 84) 76 (76, 76)
    Unknown 1 2 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 2 3 3 2 3 2 1 2 1 2 1 1 1 1 0 0 1 2 1 0 0 0
Solar.R NA (NA, NA) 72 (66, 78) 166 (65, 266) 54 (8, 99) 25 (19, 92) 179 (44, 313) 20 (20, 20) 286 (238, 334) 168 (37, 299) 299 (290, 307) 207 (102, 233) 256 (231, 298) 194 (49, 256) 193 (193, 193) 24 (14, 112) 118 (36, 284) 259 (120, 264) 149 (7, 287) 211 (163, 243) 131 (91, 250) 150 (71, 238) 229 (190, 244) 218 (64, 264) 157 (98, 252) 236 (139, 254) 148 (127, 273) 214 (157, 284) 186 (101, 269) 222 (220, 236) 204 (137, 275) 230 (141, 298) 213 (153, 276) 215 (175, 255) 229 (207, 291) 229 (167, 291) 250 (222, 267) 189 (183, 259) 207 (188, 225) 237 (237, 237) 203 (203, 203)
    Unknown 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
Temp_group







































    High 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 7 (100%) 5 (100%) 3 (100%) 2 (100%) 3 (100%) 2 (100%) 5 (100%) 3 (100%) 2 (100%) 1 (100%) 1 (100%)
    Low 1 (100%) 3 (100%) 2 (100%) 2 (100%) 3 (100%) 2 (100%) 1 (100%) 2 (100%) 2 (100%) 3 (100%) 4 (100%) 4 (100%) 3 (100%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    Medium 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 3 (100%) 3 (100%) 5 (100%) 4 (100%) 4 (100%) 9 (100%) 7 (100%) 6 (100%) 6 (100%) 5 (100%) 11 (100%) 9 (100%) 4 (100%) 5 (100%) 5 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%)
1 Median (Q1, Q3); n (%)
install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
install.packages("gtsummary")
## Warning: package 'gtsummary' is in use and will not be installed
library(dplyr)
library(gtsummary)
airquality %>%
  tbl_summary(
    by = Ozone,
    statistic = list(
      all_continuous() ~ "{mean} ({sd})",
      all_categorical() ~ "{n} / {N} ({p}%)"
    )
  )
## 37 missing rows in the "Ozone" column have been removed.
Characteristic 1
N = 1
1
4
N = 1
1
6
N = 1
1
7
N = 3
1
8
N = 1
1
9
N = 3
1
10
N = 1
1
11
N = 3
1
12
N = 2
1
13
N = 4
1
14
N = 4
1
16
N = 4
1
18
N = 4
1
19
N = 1
1
20
N = 4
1
21
N = 4
1
22
N = 1
1
23
N = 6
1
24
N = 2
1
27
N = 1
1
28
N = 3
1
29
N = 1
1
30
N = 2
1
31
N = 1
1
32
N = 3
1
34
N = 1
1
35
N = 2
1
36
N = 2
1
37
N = 2
1
39
N = 2
1
40
N = 1
1
41
N = 1
1
44
N = 3
1
45
N = 2
1
46
N = 1
1
47
N = 1
1
48
N = 1
1
49
N = 1
1
50
N = 1
1
52
N = 1
1
59
N = 2
1
61
N = 1
1
63
N = 1
1
64
N = 2
1
65
N = 1
1
66
N = 1
1
71
N = 1
1
73
N = 2
1
76
N = 1
1
77
N = 1
1
78
N = 2
1
79
N = 1
1
80
N = 1
1
82
N = 1
1
84
N = 1
1
85
N = 2
1
89
N = 1
1
91
N = 1
1
96
N = 1
1
97
N = 2
1
108
N = 1
1
110
N = 1
1
115
N = 1
1
118
N = 1
1
122
N = 1
1
135
N = 1
1
168
N = 1
1
Wind 9.7 (NA) 9.7 (NA) 18.4 (NA) 10.5 (3.7) 20.1 (NA) 13.0 (1.8) 14.3 (NA) 11.8 (4.1) 12.1 (0.8) 11.2 (1.1) 13.3 (2.6) 8.0 (1.2) 11.6 (2.6) 13.8 (NA) 10.1 (1.4) 14.2 (2.2) 10.3 (NA) 9.3 (1.7) 10.0 (0.4) 14.9 (NA) 10.9 (4.3) 9.7 (NA) 9.2 (3.3) 10.9 (NA) 12.2 (3.2) 12.0 (NA) 8.9 (2.1) 9.2 (1.6) 14.1 (9.4) 9.2 (3.3) 10.9 (NA) 7.4 (NA) 12.2 (2.4) 12.3 (3.7) 6.9 (NA) 7.4 (NA) 6.9 (NA) 9.2 (NA) 7.4 (NA) 12.0 (NA) 7.8 (2.1) 6.3 (NA) 11.5 (NA) 6.0 (2.0) 9.7 (NA) 4.6 (NA) 13.8 (NA) 5.4 (3.7) 9.7 (NA) 5.1 (NA) 6.0 (1.3) 5.1 (NA) 8.6 (NA) 7.4 (NA) 6.3 (NA) 6.9 (0.8) 10.3 (NA) 4.6 (NA) 6.9 (NA) 6.0 (0.4) 8.0 (NA) 8.0 (NA) 5.7 (NA) 2.3 (NA) 4.0 (NA) 4.1 (NA) 3.4 (NA)
Temp 59 (NA) 61 (NA) 57 (NA) 74 (6) 61 (NA) 75 (6) 73 (NA) 67 (6) 74 (1) 72 (6) 68 (5) 77 (6) 66 (8) 59 (NA) 74 (9) 76 (1) 77 (NA) 73 (7) 71 (4) 81 (NA) 75 (8) 82 (NA) 69 (1) 78 (NA) 75 (13) 66 (NA) 84 (2) 77 (6) 74 (3) 84 (4) 83 (NA) 67 (NA) 82 (4) 80 (1) 78 (NA) 87 (NA) 81 (NA) 85 (NA) 86 (NA) 86 (NA) 80 (1) 84 (NA) 85 (NA) 83 (0) 80 (NA) 87 (NA) 90 (NA) 90 (5) 97 (NA) 88 (NA) 89 (4) 87 (NA) 86 (NA) 88 (NA) 96 (NA) 92 (4) 90 (NA) 93 (NA) 91 (NA) 92 (0) 85 (NA) 90 (NA) 79 (NA) 94 (NA) 89 (NA) 84 (NA) 81 (NA)
Solar.R 8 (NA) 25 (NA) 78 (NA) 49 (1) 19 (NA) 28 (7) 264 (NA) 218 (151) 135 (21) 129 (87) 205 (136) 135 (114) 183 (108) 99 (NA) 148 (105) 235 (32) 71 (NA) 135 (113) 249 (15) 175 (NA) 256 (25) 127 (NA) 258 (91) 244 (NA) 140 (83) 307 (NA) 274 (NA) 129 (15) 282 (4) 203 (170) 314 (NA) 190 (NA) 206 (26) 232 (28) 237 (NA) 95 (NA) 260 (NA) 248 (NA) 275 (NA) 82 (NA) 153 (144) 285 (NA) 220 (NA) 214 (55) 157 (NA) NA (NA) 291 (NA) 199 (23) 203 (NA) 276 (NA) 197 (NA) 187 (NA) 294 (NA) 213 (NA) 237 (NA) 182 (9) 229 (NA) 189 (NA) 167 (NA) 270 (4) 223 (NA) 207 (NA) 223 (NA) 225 (NA) 255 (NA) 269 (NA) 238 (NA)
    Unknown 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Temp_group


































































    High 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 3 (0%) 0 / 1 (0%) 0 / 3 (0%) 0 / 1 (0%) 0 / 3 (0%) 0 / 2 (0%) 0 / 4 (0%) 0 / 4 (0%) 0 / 4 (0%) 0 / 4 (0%) 0 / 1 (0%) 0 / 4 (0%) 0 / 4 (0%) 0 / 1 (0%) 0 / 6 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 3 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 3 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 2 (0%) 0 / 2 (0%) 1 / 2 (50%) 0 / 1 (0%) 0 / 1 (0%) 1 / 3 (33%) 0 / 2 (0%) 0 / 1 (0%) 1 / 1 (100%) 0 / 1 (0%) 0 / 1 (0%) 1 / 1 (100%) 1 / 1 (100%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 1 / 1 (100%) 1 / 1 (100%) 2 / 2 (100%) 1 / 1 (100%) 1 / 1 (100%) 2 / 2 (100%) 1 / 1 (100%) 1 / 1 (100%) 1 / 1 (100%) 1 / 1 (100%) 2 / 2 (100%) 1 / 1 (100%) 1 / 1 (100%) 1 / 1 (100%) 2 / 2 (100%) 0 / 1 (0%) 1 / 1 (100%) 0 / 1 (0%) 1 / 1 (100%) 1 / 1 (100%) 0 / 1 (0%) 0 / 1 (0%)
    Low 1 / 1 (100%) 1 / 1 (100%) 1 / 1 (100%) 1 / 3 (33%) 1 / 1 (100%) 0 / 3 (0%) 0 / 1 (0%) 2 / 3 (67%) 0 / 2 (0%) 1 / 4 (25%) 3 / 4 (75%) 1 / 4 (25%) 3 / 4 (75%) 1 / 1 (100%) 2 / 4 (50%) 0 / 4 (0%) 0 / 1 (0%) 2 / 6 (33%) 1 / 2 (50%) 0 / 1 (0%) 1 / 3 (33%) 0 / 1 (0%) 2 / 2 (100%) 0 / 1 (0%) 1 / 3 (33%) 1 / 1 (100%) 0 / 2 (0%) 0 / 2 (0%) 0 / 2 (0%) 0 / 2 (0%) 0 / 1 (0%) 1 / 1 (100%) 0 / 3 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%)
    Medium 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 2 / 3 (67%) 0 / 1 (0%) 3 / 3 (100%) 1 / 1 (100%) 1 / 3 (33%) 2 / 2 (100%) 3 / 4 (75%) 1 / 4 (25%) 3 / 4 (75%) 1 / 4 (25%) 0 / 1 (0%) 2 / 4 (50%) 4 / 4 (100%) 1 / 1 (100%) 4 / 6 (67%) 1 / 2 (50%) 1 / 1 (100%) 2 / 3 (67%) 1 / 1 (100%) 0 / 2 (0%) 1 / 1 (100%) 2 / 3 (67%) 0 / 1 (0%) 2 / 2 (100%) 2 / 2 (100%) 2 / 2 (100%) 1 / 2 (50%) 1 / 1 (100%) 0 / 1 (0%) 2 / 3 (67%) 2 / 2 (100%) 1 / 1 (100%) 0 / 1 (0%) 1 / 1 (100%) 1 / 1 (100%) 0 / 1 (0%) 0 / 1 (0%) 2 / 2 (100%) 1 / 1 (100%) 1 / 1 (100%) 2 / 2 (100%) 1 / 1 (100%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 1 (0%) 0 / 2 (0%) 1 / 1 (100%) 0 / 1 (0%) 1 / 1 (100%) 0 / 1 (0%) 0 / 1 (0%) 1 / 1 (100%) 1 / 1 (100%)
1 Mean (SD); n / N (%)
library(dplyr)
library(gtsummary)
airquality <- airquality %>%
  mutate(Temp_group = case_when(
    Temp <= 60 ~ "Low",
    Temp > 60 & Temp <= 80 ~ "Medium",
    Temp > 80 ~ "High",
    TRUE ~ "NA"
  ))
airquality %>%
  tbl_summary(by = Temp_group) %>%
  add_p(test = list(all_continuous() ~ "anova"))
## The following errors were returned during `add_p()`:
## ✖ For variable `Ozone` (`Temp_group`) and "estimate", "std.error", "parameter",
##   "statistic", "conf.low", "conf.high", and "p.value" statistics: no applicable
##   method for 'anova' applied to an object of class "data.frame"
## ✖ For variable `Solar.R` (`Temp_group`) and "estimate", "std.error",
##   "parameter", "statistic", "conf.low", "conf.high", and "p.value" statistics:
##   no applicable method for 'anova' applied to an object of class "data.frame"
## ✖ For variable `Temp` (`Temp_group`) and "estimate", "std.error", "parameter",
##   "statistic", "conf.low", "conf.high", and "p.value" statistics: no applicable
##   method for 'anova' applied to an object of class "data.frame"
## ✖ For variable `Wind` (`Temp_group`) and "estimate", "std.error", "parameter",
##   "statistic", "conf.low", "conf.high", and "p.value" statistics: no applicable
##   method for 'anova' applied to an object of class "data.frame"
Characteristic High
N = 68
1
Low
N = 8
1
Medium
N = 77
1
p-value
Wind 8.0 (6.6, 10.6) 14.1 (11.5, 15.8) 10.3 (8.6, 12.6)
Temp 86 (82, 90) 58 (57, 59) 74 (68, 77)
Ozone 64 (39, 84) 12 (4, 19) 21 (13, 30)
    Unknown 14 4 19
Solar.R 220 (175, 259) 72 (65, 99) 191 (71, 259)
    Unknown 3 2 2
1 Median (Q1, Q3)
airquality %>%
  tbl_summary(by = Ozone) %>%
  add_p() %>%
  add_overall() %>%
  add_n()
## 37 missing rows in the "Ozone" column have been removed.
## The following errors were returned during `add_p()`:
## ✖ For variable `Temp_group` (`Ozone`) and "estimate", "p.value", "conf.low",
##   and "conf.high" statistics: FEXACT error 30.  Stack length exceeded in
##   f3xact, (ldst=200, key=5842, ipn=43, itp=43, ist[ii=243]=12226). Increase
##   workspace or consider using 'simulate.p.value=TRUE'
Characteristic N Overall
N = 116
1
1
N = 1
1
4
N = 1
1
6
N = 1
1
7
N = 3
1
8
N = 1
1
9
N = 3
1
10
N = 1
1
11
N = 3
1
12
N = 2
1
13
N = 4
1
14
N = 4
1
16
N = 4
1
18
N = 4
1
19
N = 1
1
20
N = 4
1
21
N = 4
1
22
N = 1
1
23
N = 6
1
24
N = 2
1
27
N = 1
1
28
N = 3
1
29
N = 1
1
30
N = 2
1
31
N = 1
1
32
N = 3
1
34
N = 1
1
35
N = 2
1
36
N = 2
1
37
N = 2
1
39
N = 2
1
40
N = 1
1
41
N = 1
1
44
N = 3
1
45
N = 2
1
46
N = 1
1
47
N = 1
1
48
N = 1
1
49
N = 1
1
50
N = 1
1
52
N = 1
1
59
N = 2
1
61
N = 1
1
63
N = 1
1
64
N = 2
1
65
N = 1
1
66
N = 1
1
71
N = 1
1
73
N = 2
1
76
N = 1
1
77
N = 1
1
78
N = 2
1
79
N = 1
1
80
N = 1
1
82
N = 1
1
84
N = 1
1
85
N = 2
1
89
N = 1
1
91
N = 1
1
96
N = 1
1
97
N = 2
1
108
N = 1
1
110
N = 1
1
115
N = 1
1
118
N = 1
1
122
N = 1
1
135
N = 1
1
168
N = 1
1
p-value2
Wind 116 9.7 (7.4, 11.5) 9.7 (9.7, 9.7) 9.7 (9.7, 9.7) 18.4 (18.4, 18.4) 10.3 (6.9, 14.3) 20.1 (20.1, 20.1) 13.8 (10.9, 14.3) 14.3 (14.3, 14.3) 9.7 (9.2, 16.6) 12.1 (11.5, 12.6) 10.9 (10.3, 12.1) 12.9 (11.2, 15.5) 7.7 (7.2, 8.9) 12.4 (9.8, 13.5) 13.8 (13.8, 13.8) 10.1 (8.9, 11.2) 15.2 (12.9, 15.5) 10.3 (10.3, 10.3) 8.9 (8.0, 10.3) 10.0 (9.7, 10.3) 14.9 (14.9, 14.9) 11.5 (6.3, 14.9) 9.7 (9.7, 9.7) 9.2 (6.9, 11.5) 10.9 (10.9, 10.9) 12.0 (9.2, 15.5) 12.0 (12.0, 12.0) 8.9 (7.4, 10.3) 9.2 (8.0, 10.3) 14.1 (7.4, 20.7) 9.2 (6.9, 11.5) 10.9 (10.9, 10.9) 7.4 (7.4, 7.4) 11.5 (10.3, 14.9) 12.3 (9.7, 14.9) 6.9 (6.9, 6.9) 7.4 (7.4, 7.4) 6.9 (6.9, 6.9) 9.2 (9.2, 9.2) 7.4 (7.4, 7.4) 12.0 (12.0, 12.0) 7.8 (6.3, 9.2) 6.3 (6.3, 6.3) 11.5 (11.5, 11.5) 6.0 (4.6, 7.4) 9.7 (9.7, 9.7) 4.6 (4.6, 4.6) 13.8 (13.8, 13.8) 5.4 (2.8, 8.0) 9.7 (9.7, 9.7) 5.1 (5.1, 5.1) 6.0 (5.1, 6.9) 5.1 (5.1, 5.1) 8.6 (8.6, 8.6) 7.4 (7.4, 7.4) 6.3 (6.3, 6.3) 6.9 (6.3, 7.4) 10.3 (10.3, 10.3) 4.6 (4.6, 4.6) 6.9 (6.9, 6.9) 6.0 (5.7, 6.3) 8.0 (8.0, 8.0) 8.0 (8.0, 8.0) 5.7 (5.7, 5.7) 2.3 (2.3, 2.3) 4.0 (4.0, 4.0) 4.1 (4.1, 4.1) 3.4 (3.4, 3.4) 0.045
Temp 116 79 (71, 85) 59 (59, 59) 61 (61, 61) 57 (57, 57) 74 (69, 80) 61 (61, 61) 72 (71, 81) 73 (73, 73) 66 (62, 73) 74 (73, 74) 74 (68, 76) 66 (64, 72) 78 (72, 82) 65 (60, 72) 59 (59, 59) 74 (67, 81) 77 (76, 77) 77 (77, 77) 74 (67, 78) 71 (68, 73) 81 (81, 81) 77 (66, 82) 82 (82, 82) 69 (68, 70) 78 (78, 78) 81 (61, 84) 66 (66, 66) 84 (82, 85) 77 (72, 81) 74 (72, 76) 84 (81, 87) 83 (83, 83) 67 (67, 67) 81 (78, 86) 80 (79, 81) 78 (78, 78) 87 (87, 87) 81 (81, 81) 85 (85, 85) 86 (86, 86) 86 (86, 86) 80 (79, 81) 84 (84, 84) 85 (85, 85) 83 (83, 83) 80 (80, 80) 87 (87, 87) 90 (90, 90) 90 (86, 93) 97 (97, 97) 88 (88, 88) 89 (86, 92) 87 (87, 87) 86 (86, 86) 88 (88, 88) 96 (96, 96) 92 (89, 94) 90 (90, 90) 93 (93, 93) 91 (91, 91) 92 (92, 92) 85 (85, 85) 90 (90, 90) 79 (79, 79) 94 (94, 94) 89 (89, 89) 84 (84, 84) 81 (81, 81) 0.007
Solar.R 111 207 (112, 256) 8 (8, 8) 25 (25, 25) 78 (78, 78) 49 (48, 49) 19 (19, 19) 24 (24, 36) 264 (264, 264) 290 (44, 320) 135 (120, 149) 125 (70, 188) 233 (106, 304) 139 (42, 229) 178 (98, 269) 99 (99, 99) 152 (59, 238) 245 (211, 259) 71 (71, 71) 132 (14, 220) 249 (238, 259) 175 (175, 175) 256 (238, 273) 127 (127, 127) 258 (193, 322) 244 (244, 244) 92 (92, 236) 307 (307, 307) 274 (274, 274) 129 (118, 139) 282 (279, 284) 203 (83, 323) 314 (314, 314) 190 (190, 190) 192 (190, 236) 232 (212, 252) 237 (237, 237) 95 (95, 95) 260 (260, 260) 248 (248, 248) 275 (275, 275) 82 (82, 82) 153 (51, 254) 285 (285, 285) 220 (220, 220) 214 (175, 253) 157 (157, 157) NA (NA, NA) 291 (291, 291) 199 (183, 215) 203 (203, 203) 276 (276, 276) 197 (197, 197) 187 (187, 187) 294 (294, 294) 213 (213, 213) 237 (237, 237) 182 (175, 188) 229 (229, 229) 189 (189, 189) 167 (167, 167) 270 (267, 272) 223 (223, 223) 207 (207, 207) 223 (223, 223) 225 (225, 225) 255 (255, 255) 269 (269, 269) 238 (238, 238) 0.4
    Unknown
5 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Temp_group 116




































































    High
54 (47%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (33%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 2 (50%) 0 (0%) 0 (0%) 1 (25%) 0 (0%) 0 (0%) 1 (17%) 0 (0%) 1 (100%) 1 (33%) 1 (100%) 0 (0%) 0 (0%) 2 (67%) 0 (0%) 2 (100%) 1 (50%) 0 (0%) 2 (100%) 1 (100%) 0 (0%) 2 (67%) 1 (50%) 0 (0%) 1 (100%) 1 (100%) 1 (100%) 1 (100%) 1 (100%) 1 (50%) 1 (100%) 1 (100%) 2 (100%) 0 (0%) 1 (100%) 1 (100%) 2 (100%) 1 (100%) 1 (100%) 2 (100%) 1 (100%) 1 (100%) 1 (100%) 1 (100%) 2 (100%) 1 (100%) 1 (100%) 1 (100%) 2 (100%) 1 (100%) 1 (100%) 0 (0%) 1 (100%) 1 (100%) 1 (100%) 1 (100%)
    Low
4 (3.4%) 1 (100%) 0 (0%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (25%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    Medium
58 (50%) 0 (0%) 1 (100%) 0 (0%) 3 (100%) 1 (100%) 2 (67%) 1 (100%) 3 (100%) 2 (100%) 4 (100%) 4 (100%) 2 (50%) 3 (75%) 0 (0%) 3 (75%) 4 (100%) 1 (100%) 5 (83%) 2 (100%) 0 (0%) 2 (67%) 0 (0%) 2 (100%) 1 (100%) 1 (33%) 1 (100%) 0 (0%) 1 (50%) 2 (100%) 0 (0%) 0 (0%) 1 (100%) 1 (33%) 1 (50%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (50%) 0 (0%) 0 (0%) 0 (0%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%)
1 Median (Q1, Q3); n (%)
2 Kruskal-Wallis rank sum test; NA
airquality %>%
  tbl_summary(by = Wind) %>%                     
  add_p() %>%                                    
  add_overall() %>%                             
  add_n() %>%                                    
  modify_header(label ~ "**Variable**") %>%       
  modify_spanning_header(c("stat_1", "stat_2") ~ "**Wind**") %>%  
  modify_footnote(
    all_stat_cols() ~ "Median (IQR) or Frequency (%)"  
  ) %>%
  modify_caption("**Table 1. Summary of Wind Quality**") %>%  
  bold_labels()
## The following errors were returned during `modify_caption()`:
## ✖ For variable `Temp_group` (`Wind`) and "estimate", "p.value", "conf.low", and
##   "conf.high" statistics: integer overflow in exact computation
Table 1. Summary of Wind Quality
Variable N Overall
N = 153
1
Wind
2.8
N = 1
1
3.4
N = 1
1
4
N = 1
1
4.1
N = 1
1
4.6
N = 4
1
5.1
N = 3
1
5.7
N = 3
1
6.3
N = 8
1
6.9
N = 9
1
7.4
N = 10
1
8
N = 11
1
8.6
N = 8
1
9.2
N = 8
1
9.7
N = 11
1
10.3
N = 11
1
10.9
N = 8
1
11.5
N = 15
1
12
N = 4
1
12.6
N = 3
1
13.2
N = 2
1
13.8
N = 5
1
14.3
N = 6
1
14.9
N = 8
1
15.5
N = 3
1
16.1
N = 1
1
16.6
N = 3
1
18.4
N = 1
1
20.1
N = 1
1
20.7
N = 1
1
p-value2
1.7
N = 1
1
2.3
N = 1
1
Temp 153 79 (72, 85) 76 (76, 76) 94 (94, 94) 93 (93, 93) 81 (81, 81) 89 (89, 89) 84 (84, 84) 85 (80, 90) 88 (87, 92) 88 (79, 92) 82 (77, 93) 81 (74, 86) 84 (76, 87) 82 (75, 85) 82 (74, 86) 81 (69, 85) 74 (62, 81) 77 (73, 81) 79 (73, 84) 79 (68, 85) 67 (64, 77) 74 (64, 75) 68 (58, 77) 80 (67, 81) 74 (72, 79) 79 (72, 81) 77 (76, 84) 67 (67, 67) 63 (57, 73) 57 (57, 57) 61 (61, 61) 72 (72, 72) 0.020
Ozone 116 32 (18, 64) NA (NA, NA) 118 (118, 118) 73 (73, 73) 168 (168, 168) 122 (122, 122) 135 (135, 135) 66 (64, 91) 78 (77, 79) 106 (97, 115) 73 (59, 85) 43 (23, 63) 44 (35, 64) 36 (18, 108) 23 (20, 80) 28 (20, 49) 24 (11, 45) 24 (13, 36) 21 (14, 31) 24 (14, 39) 33 (28, 43) 13 (12, 13) 18 (18, 18) 19 (14, 45) 10 (8, 12) 28 (27, 44) 21 (21, 32) NA (NA, NA) 13 (11, 14) 6 (6, 6) 8 (8, 8) 37 (37, 37) <0.001
    Unknown
37 1 0 0 0 0 0 1 0 1 2 1 0 4 5 2 2 1 2 5 0 1 1 1 2 3 0 1 1 0 0 0
Solar.R 146 205 (115, 259) 59 (59, 59) 225 (225, 225) 183 (183, 183) 238 (238, 238) 255 (255, 255) 269 (269, 269) 175 (91, 189) 197 (187, 276) 223 (153, 272) 238 (169, 259) 193 (83, 260) 190 (115, 253) 143 (131, 207) 221 (167, 290) 242 (112, 252) 203 (44, 258) 139 (49, 229) 248 (166, 267) 223 (120, 322) 87 (48, 200) 238 (149, 255) 105 (65, 145) 224 (99, 291) 191 (48, 264) 236 (175, 266) 259 (92, 259) 242 (242, 242) 66 (20, 320) 78 (78, 78) 19 (19, 19) 284 (284, 284) 0.7
    Unknown
7 0 0 0 0 0 0 1 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
Temp_group 153
































    High
68 (44%) 0 (0%) 1 (100%) 1 (100%) 1 (100%) 1 (100%) 1 (100%) 3 (75%) 3 (100%) 2 (67%) 4 (50%) 5 (56%) 7 (70%) 6 (55%) 5 (63%) 5 (63%) 3 (27%) 3 (27%) 3 (38%) 6 (40%) 1 (25%) 0 (0%) 0 (0%) 2 (40%) 0 (0%) 4 (50%) 1 (33%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%)
    Low
8 (5.2%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (9.1%) 0 (0%) 0 (0%) 1 (9.1%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (50%) 1 (20%) 1 (17%) 1 (13%) 0 (0%) 0 (0%) 1 (33%) 1 (100%) 0 (0%) 0 (0%)
    Medium
77 (50%) 1 (100%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 0 (0%) 1 (25%) 0 (0%) 1 (33%) 4 (50%) 4 (44%) 3 (30%) 4 (36%) 3 (38%) 3 (38%) 7 (64%) 8 (73%) 5 (63%) 9 (60%) 3 (75%) 3 (100%) 1 (50%) 2 (40%) 5 (83%) 3 (38%) 2 (67%) 1 (100%) 2 (67%) 0 (0%) 1 (100%) 1 (100%)
1 Median (IQR) or Frequency (%)
2 Kruskal-Wallis rank sum test; NA
install.packages("tidyverse", repos = "https://cran.r-project.org/")
## Warning: package 'tidyverse' is in use and will not be installed
library(tidyverse)
install.packages("tidyverse", repos = "https://cran.r-project.org/")
## Warning: package 'tidyverse' is in use and will not be installed
install.packages("tidyverse", repos = "[https://cran.r-project.org/](https://cran.r-project.org/)")
## Warning: package 'tidyverse' is in use and will not be installed