pacman::p_load(tibble, Ecdat, dplyr, car, mlmRev, tidyr, ggplot2)

EX06

library(MASS)
dta_06 <- merge(rownames_to_column(mammals), rownames_to_column(Animals), all = TRUE)
duplicated(dta_06)
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [67] FALSE
dim (dta_06)
## [1] 67  3

EX07

dta_07 <- Caschool %>% 
  mutate(ratio = enrltot/teachers, 
         Reading = cut(readscr, breaks = quantile(readscr, probs = c(0, .33, .67, 1)), label = c("L", "M", "H"), ordered = T))

library(lattice)
xyplot(readscr ~ ratio | Reading, data = dta_07,
                type = c("p", "g", "r"), layout = c(3, 1),
                xlab = "Student-Teacher Ratio",
                ylab = "Reading Score")

EX08

head(Prestige)
##                     education income women prestige census type
## gov.administrators      13.11  12351 11.16     68.8   1113 prof
## general.managers        12.26  25879  4.02     69.1   1130 prof
## accountants             12.77   9271 15.70     63.4   1171 prof
## purchasing.officers     11.42   8865  9.11     56.8   1175 prof
## chemists                14.62   8403 11.68     73.5   2111 prof
## physicists              15.64  11030  5.13     77.6   2113 prof
str(Prestige)  
## 'data.frame':    102 obs. of  6 variables:
##  $ education: num  13.1 12.3 12.8 11.4 14.6 ...
##  $ income   : int  12351 25879 9271 8865 8403 11030 8258 14163 11377 11023 ...
##  $ women    : num  11.16 4.02 15.7 9.11 11.68 ...
##  $ prestige : num  68.8 69.1 63.4 56.8 73.5 77.6 72.6 78.1 73.1 68.8 ...
##  $ census   : int  1113 1130 1171 1175 2111 2113 2133 2141 2143 2153 ...
##  $ type     : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
dta_08.1 <- Prestige %>%
  group_by(type) %>%
  summarize(m = median(prestige, na.rm = TRUE)); dta_08.1
## # A tibble: 4 x 2
##   type      m
##   <fct> <dbl>
## 1 bc     35.9
## 2 prof   68.4
## 3 wc     41.5
## 4 <NA>   35.0
dta_08.2 <- Prestige %>%
  na.omit %>% 
  group_by(type) %>%
  mutate(m = median(prestige),
         PrestigeLevel = memisc::cases("High" = prestige >= m,
                                       "Low" = prestige < m))
xyplot(income ~ education |type, 
       group = PrestigeLevel, 
       data = dta_08.2, 
       type = c("p", "g", "r"),
       layout = c(3, 1),
       auto.key = list(columns = 2),
       xlab = "Average education of occupational incumbents in 1971",
       ylab = "Average income of incumbents in 1971")  

EX09

dta_09 <- Hsb82
head(dta_09)
##   school minrty     sx    ses   mAch   meanses sector        cses
## 1   1224     No Female -1.528  5.876 -0.434383 Public -1.09361702
## 2   1224     No Female -0.588 19.708 -0.434383 Public -0.15361702
## 3   1224     No   Male -0.528 20.349 -0.434383 Public -0.09361702
## 4   1224     No   Male -0.668  8.781 -0.434383 Public -0.23361702
## 5   1224     No   Male -0.158 17.898 -0.434383 Public  0.27638298
## 6   1224     No   Male  0.022  4.583 -0.434383 Public  0.45638298
dta_09 <- Hsb82 %>%
  group_by(sector,school) %>%
  summarise(m = mean(mAch, na.rm = TRUE),
            s = sd(mAch, na.rm = TRUE),
            n = n(),
            se = s/sqrt(n)) %>%
  mutate(lower.ci = m-2*se, upper.ci = m+2*se)
head(dta_09)
## # A tibble: 6 x 8
## # Groups:   sector [1]
##   sector school     m     s     n    se lower.ci upper.ci
##   <fct>  <ord>  <dbl> <dbl> <int> <dbl>    <dbl>    <dbl>
## 1 Public 8367    4.55  4.43    14 1.18      2.19     6.92
## 2 Public 8854    4.24  5.41    32 0.956     2.33     6.15
## 3 Public 4458    5.81  4.48    48 0.646     4.52     7.10
## 4 Public 5762    4.32  4.99    37 0.821     2.68     5.97
## 5 Public 6990    5.98  5.31    53 0.729     4.52     7.44
## 6 Public 5815    7.27  5.59    25 1.12      5.04     9.51
ggplot(dta_09, aes(x = school, y = m)) +
  geom_point() +
  geom_errorbar(aes(ymax = upper.ci, ymin = lower.ci))+
  coord_flip()+
  facet_wrap(~sector)+
  labs(x = "School",y = "Math Mean Score by School")