#load&see
library(MASS)
dta <- MASS::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
str(dta)
## 'data.frame':    2287 obs. of  6 variables:
##  $ lang : int  46 45 33 46 20 30 30 57 36 36 ...
##  $ IQ   : num  15 14.5 9.5 11 8 9.5 9.5 13 9.5 11 ...
##  $ class: Factor w/ 133 levels "180","280","1082",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ GS   : int  29 29 29 29 29 29 29 29 29 29 ...
##  $ SES  : int  23 10 15 23 10 10 23 10 13 15 ...
##  $ COMB : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
#instal.package for CI
library(Rmisc)
## Loading required package: lattice
## Loading required package: plyr
#test(language for ci=0.95)
CI(dta$lang, ci=0.95)
##    upper     mean    lower 
## 41.30405 40.93485 40.56565
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## 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(tidyr)
#see classmate to revised me answer
nlschools %>% group_by(class) %>%
  summarise(IQ_mean = mean(IQ),
            language_mean = mean(lang),
            language_lb = CI(lang, ci=0.95)[3],
            language_ub = CI(lang, ci=0.95)[1]) %>%
  mutate(classID = 1:length(levels(dta$class))) %>%
  select(classID, IQ_mean, language_mean, language_lb, language_ub) %>% 
  tail(dta, n=3)
## # A tibble: 3 x 5
##   classID IQ_mean language_mean language_lb language_ub
##     <int>   <dbl>         <dbl>       <dbl>       <dbl>
## 1     131    11.3          38.1        34.3        41.9
## 2     132    10.6          29.3        19.8        38.8
## 3     133    10.6          28.4        22.0        34.9