#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