in-class-exercise1

資料匯入、檢視資料

library(datasets)
dta <- datasets::ChickWeight
dim(dta)
## [1] 578   4
str(dta)
## Classes 'nfnGroupedData', 'nfGroupedData', 'groupedData' and 'data.frame':   578 obs. of  4 variables:
##  $ weight: num  42 51 59 64 76 93 106 125 149 171 ...
##  $ Time  : num  0 2 4 6 8 10 12 14 16 18 ...
##  $ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
##  $ Diet  : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "formula")=Class 'formula'  language weight ~ Time | Chick
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "outer")=Class 'formula'  language ~Diet
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "labels")=List of 2
##   ..$ x: chr "Time"
##   ..$ y: chr "Body weight"
##  - attr(*, "units")=List of 2
##   ..$ x: chr "(days)"
##   ..$ y: chr "(gm)"
head(dta)
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1

繪圖

lattice::xyplot(weight ~ Time | Chick, data=ChickWeight, type=c('p','r','g'))

切割Chick資料

newdta <- split(dta, dta$Chick)

使用lapply列出回歸

lapply(newdta, function(x) coef(lm(x$Time ~ x$weight)))
## $`18`
## (Intercept)    x$weight 
##        19.5        -0.5 
## 
## $`16`
## (Intercept)    x$weight 
## -27.8253707   0.6803954 
## 
## $`15`
## (Intercept)    x$weight 
## -18.4080146   0.4225865 
## 
## $`13`
## (Intercept)    x$weight 
## -17.6319500   0.4208641 
## 
## $`9`
## (Intercept)    x$weight 
## -14.5742419   0.3140564 
## 
## $`20`
## (Intercept)    x$weight 
##  -9.8882713   0.2653127 
## 
## $`10`
## (Intercept)    x$weight 
##  -9.4215789   0.2447933 
## 
## $`8`
## (Intercept)    x$weight 
##  -8.3654135   0.1996241 
## 
## $`17`
## (Intercept)    x$weight 
##  -9.3952561   0.2195884 
## 
## $`19`
## (Intercept)    x$weight 
##  -4.7998578   0.1811703 
## 
## $`4`
## (Intercept)    x$weight 
##  -4.9811534   0.1600452 
## 
## $`6`
## (Intercept)    x$weight 
##  -5.5896906   0.1451108 
## 
## $`11`
## (Intercept)    x$weight 
##  -4.5672364   0.1191833 
## 
## $`3`
## (Intercept)    x$weight 
##   -2.440880    0.115317 
## 
## $`1`
## (Intercept)    x$weight 
##  -2.4868258   0.1200313 
## 
## $`12`
## (Intercept)    x$weight 
##  -2.1128825   0.1142108 
## 
## $`2`
## (Intercept)    x$weight 
##  -2.5741368   0.1125015 
## 
## $`5`
## (Intercept)    x$weight 
##  -1.2636380   0.0961603 
## 
## $`14`
## (Intercept)    x$weight 
## -1.48394792  0.08194239 
## 
## $`7`
## (Intercept)    x$weight 
##  0.05002390  0.07244429 
## 
## $`24`
## (Intercept)    x$weight 
## -26.4252630   0.5636518 
## 
## $`30`
## (Intercept)    x$weight 
##  -6.3103604   0.1664447 
## 
## $`22`
## (Intercept)    x$weight 
##  -6.5982853   0.1680091 
## 
## $`23`
## (Intercept)    x$weight 
##  -5.6175336   0.1483997 
## 
## $`27`
## (Intercept)    x$weight 
##  -3.8762478   0.1339736 
## 
## $`28`
## (Intercept)    x$weight 
##  -2.3000411   0.1017322 
## 
## $`26`
## (Intercept)    x$weight 
## -1.67783363  0.09614122 
## 
## $`25`
## (Intercept)    x$weight 
## -1.51001714  0.08684928 
## 
## $`29`
## (Intercept)    x$weight 
##  0.32039085  0.07470935 
## 
## $`21`
## (Intercept)    x$weight 
## -0.79566738  0.06348149 
## 
## $`33`
## (Intercept)    x$weight 
##   -6.367863    0.157490 
## 
## $`37`
## (Intercept)    x$weight 
##  -4.0271029   0.1457929 
## 
## $`36`
## (Intercept)    x$weight 
## -2.27498368  0.09777628 
## 
## $`31`
## (Intercept)    x$weight 
## -1.24063585  0.09454804 
## 
## $`39`
## (Intercept)    x$weight 
## -0.93763023  0.08830016 
## 
## $`38`
## (Intercept)    x$weight 
## -0.21632004  0.07821771 
## 
## $`32`
## (Intercept)    x$weight 
## -0.73981836  0.07397029 
## 
## $`40`
## (Intercept)    x$weight 
## -0.33811875  0.07142117 
## 
## $`34`
## (Intercept)    x$weight 
##  0.10004703  0.06406685 
## 
## $`35`
## (Intercept)    x$weight 
## -0.04352163  0.05673954 
## 
## $`44`
## (Intercept)    x$weight 
##  -6.5272502   0.1520788 
## 
## $`45`
## (Intercept)    x$weight 
##  -4.4783071   0.1287385 
## 
## $`43`
## (Intercept)    x$weight 
##  -4.6866141   0.1091139 
## 
## $`41`
## (Intercept)    x$weight 
##  -4.6130920   0.1209326 
## 
## $`47`
## (Intercept)    x$weight 
##  -4.2201111   0.1183331 
## 
## $`49`
## (Intercept)    x$weight 
##   -3.194997    0.102444 
## 
## $`46`
## (Intercept)    x$weight 
##  -2.6976976   0.1015366 
## 
## $`50`
## (Intercept)    x$weight 
## -1.90964359  0.08695804 
## 
## $`42`
## (Intercept)    x$weight 
## -1.46234743  0.08303419 
## 
## $`48`
## (Intercept)    x$weight 
##  -0.1223961   0.0700152

in-class-exercise2

##lapply 將列表作為參數並將指定的函數應用於列表 
#將運算的公式帶入到輸入檔案的每個元素上,不能指定要 by row 還是 by column,會逐個項目去運算
##search()查詢目前所有被載入的套件列表
##ls返回當前所有objects的名字
##length 為向量長度 (元素個數)
search()
## [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
## [4] "package:grDevices" "package:utils"     "package:datasets" 
## [7] "package:methods"   "Autoloads"         "package:base"
# 列出各套件裡的所有項目的名子 
#以數目表示
lapply(lapply(search(), ls), length)
## [[1]]
## [1] 2
## 
## [[2]]
## [1] 448
## 
## [[3]]
## [1] 87
## 
## [[4]]
## [1] 110
## 
## [[5]]
## [1] 245
## 
## [[6]]
## [1] 104
## 
## [[7]]
## [1] 218
## 
## [[8]]
## [1] 0
## 
## [[9]]
## [1] 1232

in-class-exercise3

library(lattice)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(tidyverse)
## -- Attaching packages ------------------------------------------------------------------------- tidyverse 1.3.0 --
## √ tibble  2.1.3     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.5.0
## √ purrr   0.3.3
## -- Conflicts ---------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select

install.packages(“paceman”)

#
# Cushings example
#開啟MASS資料
library(pacman)

pacman::p_load(MASS, tidyverse)

#  method 1 把資料打散再聚合,然後對聚合以後的資料進行求平均


aggregate( . ~ Type, data = Cushings, mean)
##   Type Tetrahydrocortisone Pregnanetriol
## 1    a            2.966667          2.44
## 2    b            8.180000          1.12
## 3    c           19.720000          5.50
## 4    u           14.016667          1.20
# 因為已經依照Type分類好,繪圖方便
dta <- aggregate( . ~ Type, data = Cushings, mean)
stripplot(Pregnanetriol ~ Tetrahydrocortisone | Type, data=dta)

# method 2 語法split切割資料,[,-3]位置,指定Cushings$Type資料,function(x)循環運算,apply向量求平均
# sapply 將嘗試將其輸出解析為向量或矩陣。會給一個 list,依據()內指定的功能函數來運算,最後回傳一個 vector,而不是 list。
# 先依照Type切割資料,再計算每個欄位的平均
sapply(split(Cushings[,-3], Cushings$Type), function(x) apply(x, 2, mean))
##                            a    b     c        u
## Tetrahydrocortisone 2.966667 8.18 19.72 14.01667
## Pregnanetriol       2.440000 1.12  5.50  1.20000
# method 3  將list合併
# 語法do.call 執行,用字串進行的函數,針對list。rbind()是「列」的合併
# subset為篩選邏輯,Y是沒有(-Type),apply計算矩陣平均

do.call("rbind", as.list(
  by(Cushings, list(Cushings$Type), function(x) {
    y <- subset(x, select =  -Type)  #把Type切割掉
    apply(y, 2, mean)  # apply y物件 by column
  }
)))
##   Tetrahydrocortisone Pregnanetriol
## a            2.966667          2.44
## b            8.180000          1.12
## c           19.720000          5.50
## u           14.016667          1.20
# method 4 
# Application of dplyr
#感覺是tidyr語法,%>%將指令逐步指定到到下層,分組group_by(Type)欄,summarize加總兩者指定變項
# 下指令前可能需要對資料有一定的了解,才能準確的切割資料
Cushings %>%
 group_by(Type) %>% # 先用group_by將Type分類,直接用summarize列出mean
 summarize( t_m = mean(Tetrahydrocortisone), p_m = mean(Pregnanetriol))
## # A tibble: 4 x 3
##   Type    t_m   p_m
##   <fct> <dbl> <dbl>
## 1 a      2.97  2.44
## 2 b      8.18  1.12
## 3 c     19.7   5.5 
## 4 u     14.0   1.2
# 指令方便,且依照Type做分類,並且能在操作的過程中更改變項名稱

# method 5 雖然一樣是tidyr語法,%>%逐步指令,但nest似乎是巢狀結構,再由mutate新增指定變數
# map()需逐一計算的向量,計算所需的函數

Cushings %>%
 nest(-Type) %>%   # 去除type,並用nest分類
 mutate(avg = map(data, ~ apply(., 2, mean)), 
        res_1 = map_dbl(avg, "Tetrahydrocortisone"), 
        res_2 = map_dbl(avg, "Pregnanetriol")) 
## Warning: All elements of `...` must be named.
## Did you want `data = c(Tetrahydrocortisone, Pregnanetriol)`?
## # A tibble: 4 x 5
##   Type  data              avg       res_1 res_2
##   <fct> <list>            <list>    <dbl> <dbl>
## 1 a     <tibble [6 x 2]>  <dbl [2]>  2.97  2.44
## 2 b     <tibble [10 x 2]> <dbl [2]>  8.18  1.12
## 3 c     <tibble [5 x 2]>  <dbl [2]> 19.7   5.5 
## 4 u     <tibble [6 x 2]>  <dbl [2]> 14.0   1.2
# 依照Type做分類,因為有使用nest指令,除了計算平均外,也能看到每個Type的資料個數

###

in-class-exercise4

#
# a case study
#

## keep the school names with white spaces
dta <- read.csv("C:/Users/User/Desktop/DM_R/hk0427/inclass/nzSchools.csv", as.is=2)

##檢視資料
str(dta)
## 'data.frame':    2571 obs. of  6 variables:
##  $ ID  : int  1015 1052 1062 1092 1130 1018 1029 1030 1588 1154 ...
##  $ Name: chr  "Hora Hora School" "Morningside School" "Onerahi School" "Raurimu Avenue School" ...
##  $ City: Factor w/ 541 levels "Ahaura","Ahipara",..: 533 533 533 533 533 533 533 533 533 533 ...
##  $ Auth: Factor w/ 4 levels "Other","Private",..: 3 3 3 3 3 3 3 3 4 3 ...
##  $ Dec : int  2 3 4 2 4 8 5 5 6 1 ...
##  $ Roll: int  318 200 455 86 577 329 637 395 438 201 ...
##檢視資料2571筆資料*六個變項
dim(dta)
## [1] 2571    6
## binning

## 新增Size變項,如果Roll2阿於中位數,命名為"Large";反之為"Small"
dta$Size <- ifelse(dta$Roll > median(dta$Roll), "Large", "Small")

## 不顯示Size變項
dta$Size <- NULL

## 檢視前六筆資料
head(dta)
##     ID                  Name      City  Auth Dec Roll
## 1 1015      Hora Hora School Whangarei State   2  318
## 2 1052    Morningside School Whangarei State   3  200
## 3 1062        Onerahi School Whangarei State   4  455
## 4 1092 Raurimu Avenue School Whangarei State   2   86
## 5 1130      Whangarei School Whangarei State   4  577
## 6 1018       Hurupaki School Whangarei State   8  329
## 依照Roll做切割,分為"Small", "Mediam", "Large"
dta$Size <- cut(dta$Roll, 3, labels=c("Small", "Mediam", "Large"))

## 計算"Small", "Mediam", "Large"個數
table(dta$Size)
## 
##  Small Mediam  Large 
##   2555     15      1
## sorting

## 新增RollOrd變項,顯示Roll排名所在的位置
dta$RollOrd <- order(dta$Roll, decreasing=T)

## 顯示Roll排名前面的資料
head(dta[dta$RollOrd, ])
##       ID                  Name         City  Auth Dec Roll   Size RollOrd
## 1726 498 Correspondence School   Wellington State  NA 5546  Large     753
## 301   28     Rangitoto College     Auckland State  10 3022 Mediam     353
## 376   78      Avondale College     Auckland State   4 2613 Mediam     712
## 2307 319  Burnside High School Christchurch State   8 2588 Mediam     709
## 615   41      Macleans College     Auckland State  10 2476 Mediam    1915
## 199   43    Massey High School     Auckland State   5 2452 Mediam    1683
## 顯示Roll排名後面的資料
tail(dta[dta$RollOrd, ])
##        ID                    Name                  City    Auth Dec Roll  Size
## 2401 1641  Amana Christian School               Dunedin Private   9    7 Small
## 1590 2461       Tangimoana School              Manawatu   State   4    6 Small
## 1996 3598         Woodbank School              Kaikoura   State   4    6 Small
## 2112 3386     Jacobs River School          Jacobs River   State   5    6 Small
## 1514 2407     Ngamatapouri School Sth Taranaki District   State   9    5 Small
## 1575 2420 Papanui Junction School               Taihape   State   5    5 Small
##      RollOrd
## 2401    2562
## 1590     266
## 1996    2478
## 2112    1501
## 1514    2377
## 1575    1542
## 顯示City、Roll排名前面的資料
head(dta[order(dta$City, dta$Roll, decreasing=T), ])
##        ID                      Name      City  Auth Dec Roll  Size RollOrd
## 2548  401           Menzies College   Wyndham State   4  356 Small     859
## 2549 4054            Wyndham School   Wyndham State   5   94 Small    1163
## 1611 2742          Woodville School Woodville State   3  147 Small     726
## 1630 2640           Papatawa School Woodville State   7   27 Small    2273
## 2041 3600            Woodend School   Woodend State   9  375 Small    1401
## 1601  399 Central Southland College    Winton State   7  549 Small     450
## 顯示City、Roll排名後面的資料
tail(dta[order(dta$City, dta$Roll, decreasing=T), ])
##        ID                         Name    City  Auth Dec Roll  Size RollOrd
## 2169 3273                Albury School  Albury State   8   30 Small    1010
## 2018  350           Akaroa Area School  Akaroa State   8  125 Small    1051
## 2023 3332           Duvauchelle School  Akaroa State   9   41 Small     749
## 335  1200                Ahuroa School  Ahuroa State   7   22 Small     193
## 99   1000               Ahipara School Ahipara State   3  241 Small    1963
## 2117 2105 Awahono School - Grey Valley  Ahaura State   4  119 Small     364
## counting

## 計算Auth類別個數
table(dta$Auth)
## 
##            Other          Private            State State Integrated 
##                1               99             2144              327
##製表資料中的Auth欄
authtbl <- table(dta$Auth); authtbl
## 
##            Other          Private            State State Integrated 
##                1               99             2144              327
## 檢視類別為何?
class(authtbl)
## [1] "table"
## 檢視唯一一個Auth為"Other"的項目
dta[dta$Auth == "Other", ]
##       ID            Name         City  Auth Dec Roll  Size RollOrd
## 2315 518 Kingslea School Christchurch Other   1   51 Small    1579
## 產生Auth、Dec的次數交叉表
xtabs(~ Auth + Dec, data=dta)
##                   Dec
## Auth                 1   2   3   4   5   6   7   8   9  10
##   Other              1   0   0   0   0   0   0   0   0   0
##   Private            0   0   2   6   2   2   6  11  12  38
##   State            259 230 208 219 214 215 188 200 205 205
##   State Integrated  12  22  35  28  38  34  45  45  37  31
## aggregating

##計算Roll的平均
mean(dta$Roll)
## [1] 295.4737
##計算Auth是"Private"的Roll平均;算平均Auth = Private
mean(dta$Roll[dta$Auth == "Private"])
## [1] 308.798
## 依照Auth的分類計算Roll平均
aggregate(dta["Roll"], by=list(dta$Auth), FUN=mean)
##            Group.1     Roll
## 1            Other  51.0000
## 2          Private 308.7980
## 3            State 300.6301
## 4 State Integrated 258.3792
## 新增Rich變項,依Dec > 5為依據
dta$Rich <- dta$Dec > 5; dta$Rich
##    [1] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
##   [13] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
##   [25] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
##   [37] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
##   [49] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
##   [61] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [73] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
##  [109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [133] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
##  [145] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
##  [157] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
##  [169]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
##  [181] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
##  [193]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
##  [205]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [217]  TRUE  TRUE  TRUE  TRUE    NA  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
##  [229] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
##  [241]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [253]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [265] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
##  [277] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
##  [289]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE    NA    NA
##  [301]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
##  [313] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
##  [325]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
##  [337]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [349]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [361]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
##  [373]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
##  [385]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
##  [397]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
##  [409]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [421]  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE
##  [433] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE
##  [445]  TRUE FALSE  TRUE  TRUE FALSE    NA  TRUE  TRUE FALSE  TRUE FALSE FALSE
##  [457]  TRUE  TRUE FALSE  TRUE  TRUE    NA  TRUE FALSE    NA  TRUE  TRUE FALSE
##  [469]  TRUE    NA FALSE  TRUE  TRUE FALSE  TRUE FALSE    NA  TRUE FALSE  TRUE
##  [481] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE
##  [493] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
##  [505] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
##  [517]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [529]  TRUE  TRUE  TRUE  TRUE  TRUE    NA  TRUE  TRUE  TRUE FALSE FALSE FALSE
##  [541] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [553]    NA FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [565] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [577] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
##  [589]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
##  [601]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
##  [613]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE    NA FALSE FALSE    NA FALSE
##  [625] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [637] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [649] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE    NA FALSE  TRUE
##  [661] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
##  [673] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [685] FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [697] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
##  [709] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [721] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
##  [733] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
##  [745] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE
##  [757]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
##  [769]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
##  [781] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
##  [793] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
##  [805]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
##  [817]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
##  [829]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
##  [841] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
##  [853]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [865] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
##  [877] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
##  [889] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
##  [901] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE    NA  TRUE FALSE  TRUE  TRUE
##  [913] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
##  [925]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [937]  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
##  [949] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE
##  [961] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE
##  [973]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE
##  [985]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [997] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
## [1009] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1021]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [1033]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1045] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
## [1057]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## [1069] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1081] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1093] FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [1105] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE
## [1117]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
## [1129] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1141] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [1153]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [1165] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
## [1177] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
## [1189] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1201]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE
## [1213]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1225] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE
## [1237] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1249] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1261]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
## [1273] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
## [1285] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
## [1297] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [1309] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
## [1321] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [1333] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
## [1345] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
## [1357] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
## [1369]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE
## [1381]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## [1393] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
## [1405] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1417]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [1429]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE    NA  TRUE  TRUE
## [1441] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
## [1453]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [1465] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1477] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
## [1489] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1501]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
## [1513] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
## [1525] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## [1537] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
## [1549]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE
## [1561]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1573]  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
## [1585] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
## [1597]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
## [1609] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [1621]  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1633] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE
## [1645] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1657]  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
## [1669]  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## [1681]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1693] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
## [1705] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1717]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE    NA  TRUE  TRUE
## [1729]  TRUE FALSE    NA FALSE FALSE FALSE  TRUE  TRUE  TRUE    NA FALSE FALSE
## [1741] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
## [1753]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1765] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [1777] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## [1789] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE    NA
## [1801]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
## [1813] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1825] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1837]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE
## [1849]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
## [1861]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1873]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1885]  TRUE  TRUE  TRUE FALSE  TRUE    NA  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1897]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [1909]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1921]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [1933]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [1945] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
## [1957] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
## [1969] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [1981]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
## [1993]  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [2005]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2017]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
## [2029]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE
## [2041]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2053]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2065]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
## [2077]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2089]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
## [2101]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE    NA FALSE FALSE
## [2113] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
## [2125]  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
## [2137]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [2149]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
## [2161]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## [2173] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2185]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
## [2197] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
## [2209] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
## [2221] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [2233]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE
## [2245] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2257] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
## [2269] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE
## [2281]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [2293] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE
## [2305]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
## [2317]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
## [2329]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
## [2341]  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
## [2353]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
## [2365]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2377]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [2389]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
## [2401]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2413]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
## [2425]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2437]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2449]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2461]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
## [2473]  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2485]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [2497]  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2509]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2521]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [2533]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [2545] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## [2557] FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2569] FALSE  TRUE  TRUE
## 依照Auth、Rich的分類,計算Roll平均
aggregate(dta["Roll"], by=list(dta$Auth, dta$Rich), FUN=mean)
##            Group.1 Group.2     Roll
## 1            Other   FALSE  51.0000
## 2          Private   FALSE 151.4000
## 3            State   FALSE 261.7487
## 4 State Integrated   FALSE 183.2370
## 5          Private    TRUE 402.5362
## 6            State    TRUE 338.8243
## 7 State Integrated    TRUE 311.2135
## INDICES...製成表和特定資料,依照Auth的分組,列出Roll的全距
by(dta["Roll"], INDICES=list(dta$Auth), FUN=range)
## : Other
## [1] 51 51
## ------------------------------------------------------------ 
## : Private
## [1]    7 1663
## ------------------------------------------------------------ 
## : State
## [1]    5 5546
## ------------------------------------------------------------ 
## : State Integrated
## [1]   18 1475
##參考主揚同學
## 先切割Auth,再用lapply列出全距(結果同上)
dat <- split(dta, dta$Auth)
lapply(dat, function(x) range(x$Roll))
## $Other
## [1] 51 51
## 
## $Private
## [1]    7 1663
## 
## $State
## [1]    5 5546
## 
## $`State Integrated`
## [1]   18 1475
###

in-class-exercise5

#
# a case study - II
#


##讀取紐西蘭NCEA2007國家教育數據,header 是指資料是否有包含欄位名稱,sep 是指資料的分隔符號,quote = 資料中的字串符號,quote=" "代表關閉此功能,as.is會抑制字符向量轉換成因子
dta2 <- read.table("C:/Users/User/Desktop/DM_R/hk0427/inclass/NCEA2007.txt", sep=":", quote="", h=T, as.is=T)

##88列4行
dim(dta2)
## [1] 88  4
##檢視資料
str(dta2)
## 'data.frame':    88 obs. of  4 variables:
##  $ Name  : chr  "Al-Madinah School" "Alfriston College" "Ambury Park Centre for Riding Therapy" "Aorere College" ...
##  $ Level1: num  61.5 53.9 33.3 39.5 71.2 22.1 50.8 57.3 89.3 59.8 ...
##  $ Level2: num  75 44.1 20 50.2 78.9 30.8 34.8 49.8 89.7 65.7 ...
##  $ Level3: num  0 0 0 30.6 55.5 26.3 48.9 44.6 88.6 50.4 ...
##前六行
head(dta2)
##                                    Name Level1 Level2 Level3
## 1                     Al-Madinah School   61.5   75.0    0.0
## 2                     Alfriston College   53.9   44.1    0.0
## 3 Ambury Park Centre for Riding Therapy   33.3   20.0    0.0
## 4                        Aorere College   39.5   50.2   30.6
## 5        Auckland Girls' Grammar School   71.2   78.9   55.5
## 6                      Auckland Grammar   22.1   30.8   26.3
## apply用來代替for的循環函數,MARGIN是第幾欄列,功能為平均數
apply(dta2[, -1], MARGIN=2, FUN=mean)
##   Level1   Level2   Level3 
## 62.26705 61.06818 47.97614
## list apply是基礎循環,用來對list、data.frame數據進行循環,並返回X長度,同樣以list作為結果,功能為平均數
lapply(dta2[, -1], FUN=mean)
## $Level1
## [1] 62.26705
## 
## $Level2
## [1] 61.06818
## 
## $Level3
## [1] 47.97614
## simplify the list apply增加兩個參數simplify和USE.NAMES,返回向量,而不是list,功能為平均數
sapply(dta2[, -1], FUN=mean)
##   Level1   Level2   Level3 
## 62.26705 61.06818 47.97614
##apply的for循環函數,功能改看範圍
apply(dta2[, -1], MARGIN=2, FUN=range)
##      Level1 Level2 Level3
## [1,]    2.8    0.0    0.0
## [2,]   97.4   95.7   95.7
##以list屬性,功能改看範圍
lapply(dta2[, -1], FUN=range)
## $Level1
## [1]  2.8 97.4
## 
## $Level2
## [1]  0.0 95.7
## 
## $Level3
## [1]  0.0 95.7
##兩個參數simplify和USE.NAMES,屬性為向量,功能改看範圍
sapply(dta2[, -1], FUN=range)
##      Level1 Level2 Level3
## [1,]    2.8    0.0    0.0
## [2,]   97.4   95.7   95.7
##可參考主揚同學精湛的手法


## splitting本區指令是作業4的指令和檔案

## split分割拆出Roll、Auth的資料欄
rollsByAuth <- split(dta$Roll, dta$Auth)

##查看分割後的資料
str(rollsByAuth)
## List of 4
##  $ Other           : int 51
##  $ Private         : int [1:99] 255 39 154 73 83 25 95 85 94 729 ...
##  $ State           : int [1:2144] 318 200 455 86 577 329 637 395 201 267 ...
##  $ State Integrated: int [1:327] 438 26 191 560 151 114 126 171 211 57 ...
##資料類型
class(rollsByAuth)
## [1] "list"
##lapply對list、data.frame數據進行循環指令,感覺非常適合,再以平均數顯示
lapply(split(dta$Roll, dta$Auth), mean)
## $Other
## [1] 51
## 
## $Private
## [1] 308.798
## 
## $State
## [1] 300.6301
## 
## $`State Integrated`
## [1] 258.3792
##切割後資料sapply返回向量,一樣以平均數顯示
sapply(split(dta$Roll, dta$Auth), mean)
##            Other          Private            State State Integrated 
##          51.0000         308.7980         300.6301         258.3792
## 依照Auth計算Roll的平均(結果同上)

library(dplyr)
dta %>% group_by(Auth) %>% summarize(Roll=mean(Roll))
## # A tibble: 4 x 2
##   Auth              Roll
##   <fct>            <dbl>
## 1 Other              51 
## 2 Private           309.
## 3 State             301.
## 4 State Integrated  258.
#參考主揚同學精湛的手法

###