library(MASS)
pacman::p_load(MASS)
names(nlschools)
## [1] "lang"  "IQ"    "class" "GS"    "SES"   "COMB"
dta<- MASS::nlschools
##打開nlschools資料庫
head(dta)
##   lang   IQ class GS SES COMB
## 1   46 15.0   180 29  23    0
## 2   45 14.5   180 29  10    0
## 3   33  9.5   180 29  15    0
## 4   46 11.0   180 29  23    0
## 5   20  8.0   180 29  10    0
## 6   30  9.5   180 29  10    0
##tidyr語法
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tibble)
data(nlschools, package="MASS")
knitr::kable(head(nlschools))
lang IQ class GS SES COMB
46 15.0 180 29 23 0
45 14.5 180 29 10 0
33 9.5 180 29 15 0
46 11.0 180 29 23 0
20 8.0 180 29 10 0
30 9.5 180 29 10 0
dta <- as_tibble(MASS::nlschools)

library(tidyverse) 
## -- Attaching packages ---------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.0     √ 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()
## x dplyr::select() masks MASS::select()
##信賴區間指令
dtac <- dta  %>% group_by(class)   %>% 
  group_by(lang) %>%
  summarise(language_mean = mean(lang, na.rm = TRUE),
            sd.lang = sd(lang, na.rm = TRUE),
            n.lang = n()) %>%
  mutate(se.lang = sd.lang / sqrt(n.lang),
         language_lb = language_mean - qt(1 - (0.05 / 2), n.lang - 1) * se.lang,
         language_ub = language_mean + qt(1 - (0.05 / 2), n.lang - 1) * se.lang)
## Warning in qt(1 - (0.05/2), n.lang - 1): NaNs produced

## Warning in qt(1 - (0.05/2), n.lang - 1): NaNs produced
dtac
## # A tibble: 47 x 7
##     lang language_mean sd.lang n.lang se.lang language_lb language_ub
##    <int>         <dbl>   <dbl>  <int>   <dbl>       <dbl>       <dbl>
##  1     9             9     NaN      1     NaN         NaN         NaN
##  2    11            11     NaN      1     NaN         NaN         NaN
##  3    14            14       0      2       0          14          14
##  4    15            15       0      4       0          15          15
##  5    16            16       0      3       0          16          16
##  6    17            17       0      7       0          17          17
##  7    18            18       0      7       0          18          18
##  8    19            19       0      6       0          19          19
##  9    20            20       0     13       0          20          20
## 10    21            21       0     18       0          21          21
## # ... with 37 more rows
##04.09參考他人以指令class進行
dtac2 <- dta  %>% group_by(class)   %>%  
dplyr::summarize(IQ_mean=mean(IQ, na.rm=T), language_mean=mean(lang, na.rm=T), language_se=sd(lang, na.rm=T)/sqrt(n()), language_lb=language_mean-1.96*language_se, language_ub=language_mean+1.96*language_se)%>%  
##信賴區間和顯示到133的末三行
mutate(classID=paste0(001:133))
options(digits=5)
dtac2 %>% select(classID,IQ_mean,language_mean, language_lb,language_ub) %>%as.data.frame() %>% tail(., 3)
##     classID IQ_mean language_mean language_lb language_ub
## 131     131  11.273        38.091      34.733      41.449
## 132     132  10.550        29.300      21.067      37.533
## 133     133  10.643        28.429      23.263      33.594