The choice between tidyverse
and {base}
is somewhat like the choice between teaching conversational French and the formal language as handed down from Le Académie Française.
Here's one approach, but I don't know if I've under-estimated or over-estimated the readiness of the general run of contemporary undergraduates.
- Introduction
Everyone already knows how to use R in theory—it's school algebra f(x) = y where x is some set of data, y is some information to be extracted from it and f is one or more functions that turns x into y
To put that mental model to use, we will be discussing set-up today, including
a. Installing the R
programming language
b. Installing the RStudio
wrapper that provides a browser-like way to use R
c. Installing the tidyverse
suite of packages and the {ds4psy}
package
Text: Data Science for Psychologists (ds4psy) Data Science for Psychologists
- Demonstration
a. Naming of parts: source and console
b. Console as calculator + - / * ; concept of operator precedence
c. Hello, World
d. Typical session using a script skeleton
# name_of_script.R
# description
# author: who wrote it
# Date: 2023-04-20
# libraries
# functions
# constants
# data
d <- mtcars
# preprocessing
# main
head(mtcars)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#> Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#> Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#> Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#> Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
str(mtcars)
#> 'data.frame': 32 obs. of 11 variables:
#> $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
#> $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
#> $ disp: num 160 160 108 258 360 ...
#> $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
#> $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
#> $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
#> $ qsec: num 16.5 17 18.6 19.4 17 ...
#> $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
#> $ am : num 1 1 1 0 0 0 0 0 0 0 ...
#> $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
#> $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
summary(mtcars)
#> mpg cyl disp hp
#> Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
#> 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
#> Median :19.20 Median :6.000 Median :196.3 Median :123.0
#> Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
#> 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
#> Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
#> drat wt qsec vs
#> Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
#> 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
#> Median :3.695 Median :3.325 Median :17.71 Median :0.0000
#> Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
#> 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
#> Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
#> am gear carb
#> Min. :0.0000 Min. :3.000 Min. :1.000
#> 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
#> Median :0.0000 Median :4.000 Median :2.000
#> Mean :0.4062 Mean :3.688 Mean :2.812
#> 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
#> Max. :1.0000 Max. :5.000 Max. :8.000
complete.cases(mtcars)
#> [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [31] TRUE TRUE
stem(mtcars$mpg) # or mtcars[1]
#>
#> The decimal point is at the |
#>
#> 10 | 44
#> 12 | 3
#> 14 | 3702258
#> 16 | 438
#> 18 | 17227
#> 20 | 00445
#> 22 | 88
#> 24 | 4
#> 26 | 03
#> 28 |
#> 30 | 44
#> 32 | 49
fivenum(mtcars$mpg)
#> [1] 10.40 15.35 19.20 22.80 33.90
quantile(mtcars$mpg)
#> 0% 25% 50% 75% 100%
#> 10.400 15.425 19.200 22.800 33.900
hist(mtcars$mpg)

sd(mtcars$mpg)
#> [1] 6.026948
apply(mtcars,2,sd)
#> mpg cyl disp hp drat wt
#> 6.0269481 1.7859216 123.9386938 68.5628685 0.5346787 0.9784574
#> qsec vs am gear carb
#> 1.7869432 0.5040161 0.4989909 0.7378041 1.6152000
cor(mtcars$mpg,mtcars$drat)
#> [1] 0.6811719
pairs(mtcars[1:5])

Created on 2023-04-20 with reprex v2.0.2
-
The basic concepts:
a. the two objects types—data and functions
b. Data containers; scalars, vectors and rectangular
-
Data frames
-
Garbage in compost out; importing and transforming data
-
Slicing and dicing with select and filter
-
Repurposing variables with mutate
-
Visually literate plotting with {ggplot2}
-
Strings and dates
-
Getting help