Data wrangling: In-Class Exercise 1

2020-Spring [Data Management] Instructor: SHEU, Ching-Fan

CHIU, Ming-Tzu

2020-04-11

讀取資料

library("HSAUR3")
#> Loading required package: tools
dta <- backpain
head(dta)
#>   ID  status driver suburban
#> 1  1    case    yes      yes
#> 2  1 control    yes       no
#> 3  2    case    yes      yes
#> 4  2 control    yes      yes
#> 5  3    case    yes       no
#> 6  3 control    yes      yes

將 status 的兩種可能列為獨立變數

dta$case <- dta$status == "case"
dta$control <- dta$status == "control"
head(dta)
#>   ID  status driver suburban  case control
#> 1  1    case    yes      yes  TRUE   FALSE
#> 2  1 control    yes       no FALSE    TRUE
#> 3  2    case    yes      yes  TRUE   FALSE
#> 4  2 control    yes      yes FALSE    TRUE
#> 5  3    case    yes       no  TRUE   FALSE
#> 6  3 control    yes      yes FALSE    TRUE

創造僅有待討論變數欄位之子集

dta_status <- subset(dta, select = c(driver, suburban, case, control))
head(dta_status)
#>   driver suburban  case control
#> 1    yes      yes  TRUE   FALSE
#> 2    yes       no FALSE    TRUE
#> 3    yes      yes  TRUE   FALSE
#> 4    yes      yes FALSE    TRUE
#> 5    yes       no  TRUE   FALSE
#> 6    yes      yes FALSE    TRUE

分出各組 driver x suburban 的四組

g_ds <- split(dta_status, list(dta_status$driver, dta_status$suburban))
g_ds
#> $no.no
#>     driver suburban  case control
#> 7       no       no  TRUE   FALSE
#> 8       no       no FALSE    TRUE
#> 14      no       no FALSE    TRUE
#> 16      no       no FALSE    TRUE
#> 40      no       no FALSE    TRUE
#> 42      no       no FALSE    TRUE
#> 45      no       no  TRUE   FALSE
#> 51      no       no  TRUE   FALSE
#> 67      no       no  TRUE   FALSE
#> 86      no       no FALSE    TRUE
#> 88      no       no FALSE    TRUE
#> 90      no       no FALSE    TRUE
#> 91      no       no  TRUE   FALSE
#> 96      no       no FALSE    TRUE
#> 99      no       no  TRUE   FALSE
#> 100     no       no FALSE    TRUE
#> 107     no       no  TRUE   FALSE
#> 108     no       no FALSE    TRUE
#> 109     no       no  TRUE   FALSE
#> 110     no       no FALSE    TRUE
#> 113     no       no  TRUE   FALSE
#> 114     no       no FALSE    TRUE
#> 126     no       no FALSE    TRUE
#> 144     no       no FALSE    TRUE
#> 158     no       no FALSE    TRUE
#> 161     no       no  TRUE   FALSE
#> 162     no       no FALSE    TRUE
#> 170     no       no FALSE    TRUE
#> 181     no       no  TRUE   FALSE
#> 184     no       no FALSE    TRUE
#> 190     no       no FALSE    TRUE
#> 192     no       no FALSE    TRUE
#> 207     no       no  TRUE   FALSE
#> 208     no       no FALSE    TRUE
#> 211     no       no  TRUE   FALSE
#> 214     no       no FALSE    TRUE
#> 216     no       no FALSE    TRUE
#> 222     no       no FALSE    TRUE
#> 224     no       no FALSE    TRUE
#> 225     no       no  TRUE   FALSE
#> 238     no       no FALSE    TRUE
#> 256     no       no FALSE    TRUE
#> 257     no       no  TRUE   FALSE
#> 269     no       no  TRUE   FALSE
#> 277     no       no  TRUE   FALSE
#> 278     no       no FALSE    TRUE
#> 281     no       no  TRUE   FALSE
#> 288     no       no FALSE    TRUE
#> 290     no       no FALSE    TRUE
#> 296     no       no FALSE    TRUE
#> 316     no       no FALSE    TRUE
#> 319     no       no  TRUE   FALSE
#> 329     no       no  TRUE   FALSE
#> 331     no       no  TRUE   FALSE
#> 342     no       no FALSE    TRUE
#> 348     no       no FALSE    TRUE
#> 350     no       no FALSE    TRUE
#> 351     no       no  TRUE   FALSE
#> 354     no       no FALSE    TRUE
#> 358     no       no FALSE    TRUE
#> 360     no       no FALSE    TRUE
#> 368     no       no FALSE    TRUE
#> 370     no       no FALSE    TRUE
#> 376     no       no FALSE    TRUE
#> 384     no       no FALSE    TRUE
#> 392     no       no FALSE    TRUE
#> 398     no       no FALSE    TRUE
#> 399     no       no  TRUE   FALSE
#> 401     no       no  TRUE   FALSE
#> 408     no       no FALSE    TRUE
#> 417     no       no  TRUE   FALSE
#> 418     no       no FALSE    TRUE
#> 431     no       no  TRUE   FALSE
#> 
#> $yes.no
#>     driver suburban  case control
#> 2      yes       no FALSE    TRUE
#> 5      yes       no  TRUE   FALSE
#> 9      yes       no  TRUE   FALSE
#> 12     yes       no FALSE    TRUE
#> 15     yes       no  TRUE   FALSE
#> 18     yes       no FALSE    TRUE
#> 22     yes       no FALSE    TRUE
#> 23     yes       no  TRUE   FALSE
#> 31     yes       no  TRUE   FALSE
#> 32     yes       no FALSE    TRUE
#> 33     yes       no  TRUE   FALSE
#> 43     yes       no  TRUE   FALSE
#> 44     yes       no FALSE    TRUE
#> 47     yes       no  TRUE   FALSE
#> 52     yes       no FALSE    TRUE
#> 57     yes       no  TRUE   FALSE
#> 59     yes       no  TRUE   FALSE
#> 61     yes       no  TRUE   FALSE
#> 63     yes       no  TRUE   FALSE
#> 68     yes       no FALSE    TRUE
#> 70     yes       no FALSE    TRUE
#> 73     yes       no  TRUE   FALSE
#> 74     yes       no FALSE    TRUE
#> 79     yes       no  TRUE   FALSE
#> 82     yes       no FALSE    TRUE
#> 87     yes       no  TRUE   FALSE
#> 93     yes       no  TRUE   FALSE
#> 94     yes       no FALSE    TRUE
#> 95     yes       no  TRUE   FALSE
#> 97     yes       no  TRUE   FALSE
#> 98     yes       no FALSE    TRUE
#> 111    yes       no  TRUE   FALSE
#> 119    yes       no  TRUE   FALSE
#> 120    yes       no FALSE    TRUE
#> 123    yes       no  TRUE   FALSE
#> 130    yes       no FALSE    TRUE
#> 131    yes       no  TRUE   FALSE
#> 136    yes       no FALSE    TRUE
#> 142    yes       no FALSE    TRUE
#> 146    yes       no FALSE    TRUE
#> 147    yes       no  TRUE   FALSE
#> 152    yes       no FALSE    TRUE
#> 153    yes       no  TRUE   FALSE
#> 155    yes       no  TRUE   FALSE
#> 160    yes       no FALSE    TRUE
#> 165    yes       no  TRUE   FALSE
#> 171    yes       no  TRUE   FALSE
#> 172    yes       no FALSE    TRUE
#> 173    yes       no  TRUE   FALSE
#> 174    yes       no FALSE    TRUE
#> 176    yes       no FALSE    TRUE
#> 178    yes       no FALSE    TRUE
#> 182    yes       no FALSE    TRUE
#> 185    yes       no  TRUE   FALSE
#> 191    yes       no  TRUE   FALSE
#> 194    yes       no FALSE    TRUE
#> 199    yes       no  TRUE   FALSE
#> 201    yes       no  TRUE   FALSE
#> 202    yes       no FALSE    TRUE
#> 203    yes       no  TRUE   FALSE
#> 204    yes       no FALSE    TRUE
#> 212    yes       no FALSE    TRUE
#> 213    yes       no  TRUE   FALSE
#> 215    yes       no  TRUE   FALSE
#> 220    yes       no FALSE    TRUE
#> 221    yes       no  TRUE   FALSE
#> 226    yes       no FALSE    TRUE
#> 235    yes       no  TRUE   FALSE
#> 236    yes       no FALSE    TRUE
#> 242    yes       no FALSE    TRUE
#> 244    yes       no FALSE    TRUE
#> 247    yes       no  TRUE   FALSE
#> 250    yes       no FALSE    TRUE
#> 252    yes       no FALSE    TRUE
#> 254    yes       no FALSE    TRUE
#> 258    yes       no FALSE    TRUE
#> 261    yes       no  TRUE   FALSE
#> 262    yes       no FALSE    TRUE
#> 264    yes       no FALSE    TRUE
#> 265    yes       no  TRUE   FALSE
#> 266    yes       no FALSE    TRUE
#> 270    yes       no FALSE    TRUE
#> 271    yes       no  TRUE   FALSE
#> 272    yes       no FALSE    TRUE
#> 275    yes       no  TRUE   FALSE
#> 276    yes       no FALSE    TRUE
#> 282    yes       no FALSE    TRUE
#> 289    yes       no  TRUE   FALSE
#> 291    yes       no  TRUE   FALSE
#> 293    yes       no  TRUE   FALSE
#> 294    yes       no FALSE    TRUE
#> 297    yes       no  TRUE   FALSE
#> 300    yes       no FALSE    TRUE
#> 301    yes       no  TRUE   FALSE
#> 302    yes       no FALSE    TRUE
#> 305    yes       no  TRUE   FALSE
#> 306    yes       no FALSE    TRUE
#> 311    yes       no  TRUE   FALSE
#> 312    yes       no FALSE    TRUE
#> 317    yes       no  TRUE   FALSE
#> 323    yes       no  TRUE   FALSE
#> 326    yes       no FALSE    TRUE
#> 332    yes       no FALSE    TRUE
#> 335    yes       no  TRUE   FALSE
#> 337    yes       no  TRUE   FALSE
#> 341    yes       no  TRUE   FALSE
#> 344    yes       no FALSE    TRUE
#> 346    yes       no FALSE    TRUE
#> 347    yes       no  TRUE   FALSE
#> 352    yes       no FALSE    TRUE
#> 353    yes       no  TRUE   FALSE
#> 357    yes       no  TRUE   FALSE
#> 359    yes       no  TRUE   FALSE
#> 363    yes       no  TRUE   FALSE
#> 365    yes       no  TRUE   FALSE
#> 374    yes       no FALSE    TRUE
#> 382    yes       no FALSE    TRUE
#> 386    yes       no FALSE    TRUE
#> 394    yes       no FALSE    TRUE
#> 396    yes       no FALSE    TRUE
#> 407    yes       no  TRUE   FALSE
#> 411    yes       no  TRUE   FALSE
#> 412    yes       no FALSE    TRUE
#> 420    yes       no FALSE    TRUE
#> 421    yes       no  TRUE   FALSE
#> 425    yes       no  TRUE   FALSE
#> 434    yes       no FALSE    TRUE
#> 
#> $no.yes
#>     driver suburban  case control
#> 19      no      yes  TRUE   FALSE
#> 20      no      yes FALSE    TRUE
#> 89      no      yes  TRUE   FALSE
#> 125     no      yes  TRUE   FALSE
#> 168     no      yes FALSE    TRUE
#> 188     no      yes FALSE    TRUE
#> 196     no      yes FALSE    TRUE
#> 230     no      yes FALSE    TRUE
#> 241     no      yes  TRUE   FALSE
#> 248     no      yes FALSE    TRUE
#> 285     no      yes  TRUE   FALSE
#> 415     no      yes  TRUE   FALSE
#> 416     no      yes FALSE    TRUE
#> 
#> $yes.yes
#>     driver suburban  case control
#> 1      yes      yes  TRUE   FALSE
#> 3      yes      yes  TRUE   FALSE
#> 4      yes      yes FALSE    TRUE
#> 6      yes      yes FALSE    TRUE
#> 10     yes      yes FALSE    TRUE
#> 11     yes      yes  TRUE   FALSE
#> 13     yes      yes  TRUE   FALSE
#> 17     yes      yes  TRUE   FALSE
#> 21     yes      yes  TRUE   FALSE
#> 24     yes      yes FALSE    TRUE
#> 25     yes      yes  TRUE   FALSE
#> 26     yes      yes FALSE    TRUE
#> 27     yes      yes  TRUE   FALSE
#> 28     yes      yes FALSE    TRUE
#> 29     yes      yes  TRUE   FALSE
#> 30     yes      yes FALSE    TRUE
#> 34     yes      yes FALSE    TRUE
#> 35     yes      yes  TRUE   FALSE
#> 36     yes      yes FALSE    TRUE
#> 37     yes      yes  TRUE   FALSE
#> 38     yes      yes FALSE    TRUE
#> 39     yes      yes  TRUE   FALSE
#> 41     yes      yes  TRUE   FALSE
#> 46     yes      yes FALSE    TRUE
#> 48     yes      yes FALSE    TRUE
#> 49     yes      yes  TRUE   FALSE
#> 50     yes      yes FALSE    TRUE
#> 53     yes      yes  TRUE   FALSE
#> 54     yes      yes FALSE    TRUE
#> 55     yes      yes  TRUE   FALSE
#> 56     yes      yes FALSE    TRUE
#> 58     yes      yes FALSE    TRUE
#> 60     yes      yes FALSE    TRUE
#> 62     yes      yes FALSE    TRUE
#> 64     yes      yes FALSE    TRUE
#> 65     yes      yes  TRUE   FALSE
#> 66     yes      yes FALSE    TRUE
#> 69     yes      yes  TRUE   FALSE
#> 71     yes      yes  TRUE   FALSE
#> 72     yes      yes FALSE    TRUE
#> 75     yes      yes  TRUE   FALSE
#> 76     yes      yes FALSE    TRUE
#> 77     yes      yes  TRUE   FALSE
#> 78     yes      yes FALSE    TRUE
#> 80     yes      yes FALSE    TRUE
#> 81     yes      yes  TRUE   FALSE
#> 83     yes      yes  TRUE   FALSE
#> 84     yes      yes FALSE    TRUE
#> 85     yes      yes  TRUE   FALSE
#> 92     yes      yes FALSE    TRUE
#> 101    yes      yes  TRUE   FALSE
#> 102    yes      yes FALSE    TRUE
#> 103    yes      yes  TRUE   FALSE
#> 104    yes      yes FALSE    TRUE
#> 105    yes      yes  TRUE   FALSE
#> 106    yes      yes FALSE    TRUE
#> 112    yes      yes FALSE    TRUE
#> 115    yes      yes  TRUE   FALSE
#> 116    yes      yes FALSE    TRUE
#> 117    yes      yes  TRUE   FALSE
#> 118    yes      yes FALSE    TRUE
#> 121    yes      yes  TRUE   FALSE
#> 122    yes      yes FALSE    TRUE
#> 124    yes      yes FALSE    TRUE
#> 127    yes      yes  TRUE   FALSE
#> 128    yes      yes FALSE    TRUE
#> 129    yes      yes  TRUE   FALSE
#> 132    yes      yes FALSE    TRUE
#> 133    yes      yes  TRUE   FALSE
#> 134    yes      yes FALSE    TRUE
#> 135    yes      yes  TRUE   FALSE
#> 137    yes      yes  TRUE   FALSE
#> 138    yes      yes FALSE    TRUE
#> 139    yes      yes  TRUE   FALSE
#> 140    yes      yes FALSE    TRUE
#> 141    yes      yes  TRUE   FALSE
#> 143    yes      yes  TRUE   FALSE
#> 145    yes      yes  TRUE   FALSE
#> 148    yes      yes FALSE    TRUE
#> 149    yes      yes  TRUE   FALSE
#> 150    yes      yes FALSE    TRUE
#> 151    yes      yes  TRUE   FALSE
#> 154    yes      yes FALSE    TRUE
#> 156    yes      yes FALSE    TRUE
#> 157    yes      yes  TRUE   FALSE
#> 159    yes      yes  TRUE   FALSE
#> 163    yes      yes  TRUE   FALSE
#> 164    yes      yes FALSE    TRUE
#> 166    yes      yes FALSE    TRUE
#> 167    yes      yes  TRUE   FALSE
#> 169    yes      yes  TRUE   FALSE
#> 175    yes      yes  TRUE   FALSE
#> 177    yes      yes  TRUE   FALSE
#> 179    yes      yes  TRUE   FALSE
#> 180    yes      yes FALSE    TRUE
#> 183    yes      yes  TRUE   FALSE
#> 186    yes      yes FALSE    TRUE
#> 187    yes      yes  TRUE   FALSE
#> 189    yes      yes  TRUE   FALSE
#> 193    yes      yes  TRUE   FALSE
#> 195    yes      yes  TRUE   FALSE
#> 197    yes      yes  TRUE   FALSE
#> 198    yes      yes FALSE    TRUE
#> 200    yes      yes FALSE    TRUE
#> 205    yes      yes  TRUE   FALSE
#> 206    yes      yes FALSE    TRUE
#> 209    yes      yes  TRUE   FALSE
#> 210    yes      yes FALSE    TRUE
#> 217    yes      yes  TRUE   FALSE
#> 218    yes      yes FALSE    TRUE
#> 219    yes      yes  TRUE   FALSE
#> 223    yes      yes  TRUE   FALSE
#> 227    yes      yes  TRUE   FALSE
#> 228    yes      yes FALSE    TRUE
#> 229    yes      yes  TRUE   FALSE
#> 231    yes      yes  TRUE   FALSE
#> 232    yes      yes FALSE    TRUE
#> 233    yes      yes  TRUE   FALSE
#> 234    yes      yes FALSE    TRUE
#> 237    yes      yes  TRUE   FALSE
#> 239    yes      yes  TRUE   FALSE
#> 240    yes      yes FALSE    TRUE
#> 243    yes      yes  TRUE   FALSE
#> 245    yes      yes  TRUE   FALSE
#> 246    yes      yes FALSE    TRUE
#> 249    yes      yes  TRUE   FALSE
#> 251    yes      yes  TRUE   FALSE
#> 253    yes      yes  TRUE   FALSE
#> 255    yes      yes  TRUE   FALSE
#> 259    yes      yes  TRUE   FALSE
#> 260    yes      yes FALSE    TRUE
#> 263    yes      yes  TRUE   FALSE
#> 267    yes      yes  TRUE   FALSE
#> 268    yes      yes FALSE    TRUE
#> 273    yes      yes  TRUE   FALSE
#> 274    yes      yes FALSE    TRUE
#> 279    yes      yes  TRUE   FALSE
#> 280    yes      yes FALSE    TRUE
#> 283    yes      yes  TRUE   FALSE
#> 284    yes      yes FALSE    TRUE
#> 286    yes      yes FALSE    TRUE
#> 287    yes      yes  TRUE   FALSE
#> 292    yes      yes FALSE    TRUE
#> 295    yes      yes  TRUE   FALSE
#> 298    yes      yes FALSE    TRUE
#> 299    yes      yes  TRUE   FALSE
#> 303    yes      yes  TRUE   FALSE
#> 304    yes      yes FALSE    TRUE
#> 307    yes      yes  TRUE   FALSE
#> 308    yes      yes FALSE    TRUE
#> 309    yes      yes  TRUE   FALSE
#> 310    yes      yes FALSE    TRUE
#> 313    yes      yes  TRUE   FALSE
#> 314    yes      yes FALSE    TRUE
#> 315    yes      yes  TRUE   FALSE
#> 318    yes      yes FALSE    TRUE
#> 320    yes      yes FALSE    TRUE
#> 321    yes      yes  TRUE   FALSE
#> 322    yes      yes FALSE    TRUE
#> 324    yes      yes FALSE    TRUE
#> 325    yes      yes  TRUE   FALSE
#> 327    yes      yes  TRUE   FALSE
#> 328    yes      yes FALSE    TRUE
#> 330    yes      yes FALSE    TRUE
#> 333    yes      yes  TRUE   FALSE
#> 334    yes      yes FALSE    TRUE
#> 336    yes      yes FALSE    TRUE
#> 338    yes      yes FALSE    TRUE
#> 339    yes      yes  TRUE   FALSE
#> 340    yes      yes FALSE    TRUE
#> 343    yes      yes  TRUE   FALSE
#> 345    yes      yes  TRUE   FALSE
#> 349    yes      yes  TRUE   FALSE
#> 355    yes      yes  TRUE   FALSE
#> 356    yes      yes FALSE    TRUE
#> 361    yes      yes  TRUE   FALSE
#> 362    yes      yes FALSE    TRUE
#> 364    yes      yes FALSE    TRUE
#> 366    yes      yes FALSE    TRUE
#> 367    yes      yes  TRUE   FALSE
#> 369    yes      yes  TRUE   FALSE
#> 371    yes      yes  TRUE   FALSE
#> 372    yes      yes FALSE    TRUE
#> 373    yes      yes  TRUE   FALSE
#> 375    yes      yes  TRUE   FALSE
#> 377    yes      yes  TRUE   FALSE
#> 378    yes      yes FALSE    TRUE
#> 379    yes      yes  TRUE   FALSE
#> 380    yes      yes FALSE    TRUE
#> 381    yes      yes  TRUE   FALSE
#> 383    yes      yes  TRUE   FALSE
#> 385    yes      yes  TRUE   FALSE
#> 387    yes      yes  TRUE   FALSE
#> 388    yes      yes FALSE    TRUE
#> 389    yes      yes  TRUE   FALSE
#> 390    yes      yes FALSE    TRUE
#> 391    yes      yes  TRUE   FALSE
#> 393    yes      yes  TRUE   FALSE
#> 395    yes      yes  TRUE   FALSE
#> 397    yes      yes  TRUE   FALSE
#> 400    yes      yes FALSE    TRUE
#> 402    yes      yes FALSE    TRUE
#> 403    yes      yes  TRUE   FALSE
#> 404    yes      yes FALSE    TRUE
#> 405    yes      yes  TRUE   FALSE
#> 406    yes      yes FALSE    TRUE
#> 409    yes      yes  TRUE   FALSE
#> 410    yes      yes FALSE    TRUE
#> 413    yes      yes  TRUE   FALSE
#> 414    yes      yes FALSE    TRUE
#> 419    yes      yes  TRUE   FALSE
#> 422    yes      yes FALSE    TRUE
#> 423    yes      yes  TRUE   FALSE
#> 424    yes      yes FALSE    TRUE
#> 426    yes      yes FALSE    TRUE
#> 427    yes      yes  TRUE   FALSE
#> 428    yes      yes FALSE    TRUE
#> 429    yes      yes  TRUE   FALSE
#> 430    yes      yes FALSE    TRUE
#> 432    yes      yes FALSE    TRUE
#> 433    yes      yes  TRUE   FALSE

使用 split() 將資料 dta 依據其中的 driversuburban 變數的四種組合分組。

*先將 driversuburban 變數的不同組合製作成 list 再放入 split()

各組統計

lapply(g_ds, summary)
#> $no.no
#>  driver   suburban    case          control       
#>  no :73   no :73   Mode :logical   Mode :logical  
#>  yes: 0   yes: 0   FALSE:47        FALSE:26       
#>                    TRUE :26        TRUE :47       
#> 
#> $yes.no
#>  driver    suburban     case          control       
#>  no :  0   no :127   Mode :logical   Mode :logical  
#>  yes:127   yes:  0   FALSE:63        FALSE:64       
#>                      TRUE :64        TRUE :63       
#> 
#> $no.yes
#>  driver   suburban    case          control       
#>  no :13   no : 0   Mode :logical   Mode :logical  
#>  yes: 0   yes:13   FALSE:7         FALSE:6        
#>                    TRUE :6         TRUE :7        
#> 
#> $yes.yes
#>  driver    suburban     case          control       
#>  no :  0   no :  0   Mode :logical   Mode :logical  
#>  yes:221   yes:221   FALSE:100       FALSE:121      
#>                      TRUE :121       TRUE :100

整理並建立表格

# install.packages("kableExtra")
library(knitr)
library(kableExtra)

使用 knitr::kable 來建立表格。

text_tbl <- data.frame(
  driver = c("no", "no", "yes", "yes"), 
  suburban = c("no", "yes", "no", "yes"), 
  case = c(26, 6, 64, 121),
  control = c(47, 7, 63, 100),
  total = c(73, 13, 127, 221)
)
kable(text_tbl) %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
driver suburban case control total
no no 26 47 73
no yes 6 7 13
yes no 64 63 127
yes yes 121 100 221

先建立表格內容之資料框,再使用 kable() 語法,搭配適合的呈現風格,詳細內容參考 knitr::kablekableExtra 介紹 ( Create Awesome HTML Table with knitr::kable and kableExtra)