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'))
newdta <- split(dta, dta$Chick)
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
##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
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的資料個數
###
#
# 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
###
#
# 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.
#參考主揚同學精湛的手法
###