Descriptive Stats, Tables, & Patchwork Package
Load libraries
library(tidyverse)
library(psych)
library(palmerpenguins)
library(janitor)
library(gt)
library(papaja)
library(ggeasy)
library(patchwork)Descriptive Stats
- example from Brick paper
load in data
clean names
create new variable for demographic analyses
tabyl()and add % - ?tabyl and scroll all the way down and you’ll see examplesage: mean, min, max
sex: n and percentage
case_when()example
load(file = "brick/merged.rda")
mydata_raw <- merged %>%
clean_names() %>%
filter(study == "Prolific")
n_subj = length(unique(mydata_raw$id))
mydata_demo <- mydata_raw %>%
select(id, age, female) %>%
na.omit() %>%
distinct(id, age, female) %>%
filter(female == 1 | female == 2)
mydata_demo %>%
summarise(mean_age = mean(age),
sd_age = sd(age),
min_age = min(age))## # A tibble: 1 x 3
## mean_age sd_age min_age
## <dbl> <dbl> <dbl>
## 1 40.8 13.7 18
describe(mydata_demo$age) # psych package## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 795 40.82 13.65 40 40.2 16.31 18 76 58 0.32 -0.79 0.48
# tabyl()
mydata_demo %>%
tabyl(female) %>%
adorn_pct_formatting()## female n percent
## 1 319 40.1%
## 2 476 59.9%
range(mydata_demo$age)## [1] 18 76
# case_when()
data <- mydata_demo %>%
mutate(age_group = case_when(age < 30 ~ "youngest",
age < 55 & age >= 30 ~ "middle",
age >= 55 ~ "oldest"))
#cut_number(mydata_demo$age, 3)
mydata_demo %>%
mutate(gender = case_when(female == 1 ~ "female",
female == 2 ~ "male"))## # A tibble: 795 x 4
## id age female gender
## <dbl> <dbl> <chr> <chr>
## 1 1001 21 1 female
## 2 1002 21 1 female
## 3 1003 37 2 male
## 4 1004 35 2 male
## 5 1005 24 1 female
## 6 1007 47 2 male
## 7 1008 51 2 male
## 8 1009 48 2 male
## 9 1010 54 1 female
## 10 1011 22 1 female
## # ... with 785 more rows
mydata_demo %>%
mutate(age_group = case_when(age < 50 ~ "younger",
age >= 50 ~ "older"))## # A tibble: 795 x 4
## id age female age_group
## <dbl> <dbl> <chr> <chr>
## 1 1001 21 1 younger
## 2 1002 21 1 younger
## 3 1003 37 2 younger
## 4 1004 35 2 younger
## 5 1005 24 1 younger
## 6 1007 47 2 younger
## 7 1008 51 2 older
## 8 1009 48 2 younger
## 9 1010 54 1 older
## 10 1011 22 1 younger
## # ... with 785 more rows
Formatting Tables
gtpackage
penguins$bill_length_mm <- as.numeric(penguins$bill_depth_mm)
penguins_data <- penguins %>%
group_by(species) %>%
summarise(mean_bill = mean(bill_length_mm, na.rm = TRUE),
sd_bill = sd(bill_length_mm, na.rm = TRUE))
penguins_data %>%
gt() %>%
fmt_number( # format numbers to 2 decimal places
columns = c(mean_bill, sd_bill),
decimals = 1
) %>%
tab_header( # title and subtitle
title = "Descriptive Stats",
subtitle = "Penguin Data"
) %>%
tab_footnote( # you can add 1 or more footnotes
footnote = "species with bills > 40",
locations = cells_body(
columns = c(mean_bill),
rows = mean_bill > 40
)
)| Descriptive Stats | ||
|---|---|---|
| Penguin Data | ||
| species | mean_bill | sd_bill |
| Adelie | 18.3 | 1.2 |
| Chinstrap | 18.4 | 1.1 |
| Gentoo | 15.0 | 1.0 |
- apa_table() from papaja package
- knit to see table
apa_table(penguins_data)
**
| species | mean_bill | sd_bill |
|---|---|---|
| Adelie | 18.35 | 1.22 |
| Chinstrap | 18.42 | 1.14 |
| Gentoo | 14.98 | 0.98 |
Patchwork Package
Easily plot multiple graphs next to each other
my_penguins <- penguins %>%
na.omit()
plot1 <- ggplot(my_penguins, aes(bill_length_mm, bill_depth_mm)) +
geom_point() +
geom_smooth() +
theme_bw()
plot2 <- ggplot(my_penguins, aes(bill_length_mm, flipper_length_mm)) +
geom_point() +
geom_smooth() +
theme_bw()
plot1 + plot2