## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(JWileymisc)
library(ggplot2)
library(data.table)

## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# 
# egltable(c("mpg", "hp", "qsec", "wt", "vs"),
#          data = mtcars)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
          egltable(c("mpg", "hp", "qsec", "wt", "vs"),
                   data = mtcars),
          caption = "Example descriptive statistics table.",
          justify = "left")


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# 
# egltable(c("mpg", "hp", "qsec", "wt", "vs"),
#          data = mtcars, strict=FALSE)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
          egltable(c("mpg", "hp", "qsec", "wt", "vs"),
                   data = mtcars, strict=FALSE),
          caption = "Example descriptive statistics table with automatic categorical variables.",
          justify = "left")


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# 
# egltable(c("mpg", "hp", "qsec", "wt", "vs"),
#   g = "am", data = mtcars, strict = FALSE)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
          egltable(c("mpg", "hp", "qsec", "wt", "vs"), 
                   g = "am", data = mtcars, strict = FALSE),
          caption = "Example descriptive statistics table by group.",
          justify = "left")


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# 
# egltable(c("mpg", "hp", "qsec", "wt", "vs"),
#          g = "am", data = mtcars, strict = FALSE,
#          parametric = FALSE)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
          egltable(c("mpg", "hp", "qsec", "wt", "vs"), 
                   g = "am", data = mtcars, strict = FALSE,
                   parametric = FALSE),
          caption = "Example descriptive statistics table by group.",
          justify = "left")


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# ## example with paired data
# egltable(
#   vars = "extra",
#   g = "group",
#   data = sleep,
#   idvar = "ID",
#   paired = TRUE)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
egltable(
  vars = "extra",
  g = "group",
  data = sleep,
  idvar = "ID",
  paired = TRUE),
caption = "Example parametric descriptive statistics for paired data.",
justify = "left")


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# egltable(
#   vars = "extra",
#   g = "group",
#   data = sleep,
#   idvar = "ID",
#   paired = TRUE,
#   parametric = FALSE)
# 

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
egltable(
  vars = "extra",
  g = "group",
  data = sleep,
  idvar = "ID",
  paired = TRUE,
  parametric = FALSE),
caption = "Example non parametric descriptive statistics for paired data.",
justify = "left")


## -----------------------------------------------------------------------------

## paired categorical data example
## using data on chick weights to create categorical data
tmp <- subset(ChickWeight, Time %in% c(0, 20))
tmp$WeightTertile <- cut(tmp$weight,
  breaks = quantile(tmp$weight, c(0, 1/3, 2/3, 1), na.rm = TRUE),
  include.lowest = TRUE)


## ----eval = FALSE, echo = TRUE, results = "hide"------------------------------
# egltable(c("weight", "WeightTertile"), g = "Time",
#   data = tmp,
#   idvar = "Chick", paired = TRUE)

## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
egltable(c("weight", "WeightTertile"), g = "Time",
  data = tmp,
  idvar = "Chick", paired = TRUE),
caption = "Continuous and categorical paired data.",
justify = "left")


## -----------------------------------------------------------------------------

m <- SEMSummary(~ mpg + hp + qsec + wt, data = mtcars)

corTab <- APAStyler(m, type = "cor", stars = TRUE)


## ----echo = FALSE, results = "asis"-------------------------------------------

pander::pandoc.table(
          corTab$table,
          caption = "Example correlation table.",
          justify = "left")


## -----------------------------------------------------------------------------

plot(m) +
  ggtitle("Order by hierarchical clustering")

plot(m, order = "asis") +
  ggtitle("Order as written")


## -----------------------------------------------------------------------------

plot(m, type = "p") +
  ggtitle("Numbers are p-values")


## -----------------------------------------------------------------------------

mg <- SEMSummary(~ Sepal.Length + Petal.Length +
                  Sepal.Width + Petal.Width | Species,
                 data = iris)

plot(mg)


## -----------------------------------------------------------------------------

## simulate some likert style data
set.seed(1234)
d <- data.table(
  Happy = sample(1:5, 200, TRUE, c(.1, .2, .4, .2, .1)),
  Cheerful = sample(1:5, 200, TRUE, c(.1, .2, .2, .4, .1)),
  Peaceful = sample(1:5, 200, TRUE, c(.1, .1, .2, .4, .2)),
  Sad = sample(1:5, 200, TRUE, c(.1, .3, .3, .2, .1)),
  Hopeless = sample(1:5, 200, TRUE, c(.3, .3, .2, .2, 0)),  
  Angry = sample(1:5, 200, TRUE, c(.4, .3, .2, .08, .02)))

dmeans <- melt(d, measure.vars = names(d))[,
  .(Mean = mean(value, na.rm = TRUE)), by = variable]

dmeans[, Low := paste0(variable, "\nNot at all")]
dmeans[, High := paste0(variable, "\nExtremely")]
dmeans[, variable := as.integer(factor(variable))]

## view the summarised data
print(dmeans)

gglikert("Mean", "variable", "Low", "High", data = dmeans,
         xlim = c(1, 5),
         title = "Average Affect Ratings")


## -----------------------------------------------------------------------------

## create a grouping variable
dg <- cbind(d, Group = ifelse(
                 d$Happy > mean(d$Happy, na.rm = TRUE),
                 "General Population", "Depressed"))

dgmeans <- melt(dg, measure.vars = names(d), id.vars = "Group")[,
  .(Mean = mean(value, na.rm = TRUE)), by = .(variable, Group)]

dgmeans[, Low := paste0(variable, "\nNot at all")]
dgmeans[, High := paste0(variable, "\nExtremely")]
dgmeans[, variable := as.integer(factor(variable))]

## view the summarised data
print(dgmeans)

gglikert("Mean", "variable", "Low", "High",
         colour = "Group",
         data = dgmeans,
         xlim = c(1, 5),
         title = "Average Affect Ratings") +
  scale_colour_manual(
    values = c("Depressed" = "black",
               "General Population" = "grey70"))


