R Essential
Views: 1367
Wrote on June 29, 2020, 11:29 p.m.
Entering data
# Title: Entering data
# Wrangling and Visualizing Data
# BASIC COMMANDS ###########################################
2+2 # Basic math; press cmd/ctrl enter
1:100 # Prints numbers 1 to 100 across several lines
print("Hello, World!") # Prints "Hello, World" in console
# ASSIGNING VALUES #########################################
# Individual values
a <- 1 # Use <- and not =
2 -> b # Can go other way, but silly
c <- d <- e <- 3 # Multiple assignments
# Multiple values
x <- c(1, 2, 5, 9) # c = Combine/collect/concatenate
x # Print contents of x in Console
# SEQUENCES ################################################
# Create sequential data
0:10 # 0 through 10
10:0 # 10 through 0
seq(10) # 1 to 10
seq(30, 0, by = -3) # Count down by 3
# MATH ################################################
# Surround command with parentheses to also print
(y <- c(5, 1, 0, 10))
x # Take another look at x
x + y # Adds corresponding elements in x and y
x * 2 # Multiplies each element in x by 2
2^6 # Powers/exponents
sqrt(64) # Square root
log(100) # Natural log: base e (2.71828...); NOT "ln"
log10(100) # Base 10 log
# CLEAN UP #################################################
# Clear environment
rm(list = ls())
# Clear console
cat("\014") # ctrl+L
# Clear mind :)
Data Type
# Title: Data types and structures
# Wrangling and Visualizing Data
# DATA TYPES ###############################################
## Numeric =================================================
n1 <- 15 # Double precision by default
n1
typeof(n1)
n2 <- 1.5
n2
typeof(n2)
## Character ===============================================
c1 <- "c"
c1
typeof(c1)
c2 <- "a string of text"
c2
typeof(c2)
## Logical =================================================
l1 <- TRUE
l1
typeof(l1)
l2 <- F
l2
typeof(l2)
# DATA STRUCTURES ##########################################
## Vector ==================================================
v1 <- c(1, 2, 3, 4, 5)
v1
is.vector(v1)
v2 <- c("a", "b", "c")
v2
is.vector(v2)
v3 <- c(TRUE, TRUE, FALSE, FALSE, TRUE)
v3
is.vector(v3)
## Matrix ==================================================
m1 <- matrix(c(T, T, F, F, T, F), nrow = 2)
m1
m2 <- matrix(c("a", "b",
"c", "d"),
nrow = 2,
byrow = T)
m2
## Array ===================================================
# Give data, then dimensions (rows, columns, tables)
a1 <- array(c( 1:24), c(4, 3, 2))
a1
## Data Frame ==============================================
# Can combine vectors of the same length
vNumeric <- c(1, 2, 3)
vCharacter <- c("a", "b", "c")
vLogical <- c(T, F, T)
df1 <- cbind(vNumeric, vCharacter, vLogical)
df1 # Coerces all values to most basic data type
df2 <- as.data.frame(cbind(vNumeric, vCharacter, vLogical))
df2 # Makes a data frame with three different data types
## List ====================================================
o1 <- c(1, 2, 3)
o2 <- c("a", "b", "c", "d")
o3 <- c(T, F, T, T, F)
list1 <- list(o1, o2, o3)
list1
list2 <- list(o1, o2, o3, list1) # Lists within lists!
list2
# COERCING TYPES ###########################################
## Automatic Coercion ======================================
# Goes to "least restrictive" data type
(coerce1 <- c(1, "b", TRUE))
typeof(coerce1)
## Coerce Numeric to Integer ===============================
(coerce2 <- 5)
typeof(coerce2)
(coerce3 <- as.integer(5))
typeof(coerce3)
## Coerce Character to Numeric =============================
(coerce4 <- c("1", "2", "3"))
typeof(coerce4)
(coerce5 <- as.numeric(c("1", "2", "3")))
typeof(coerce5)
## Coerce Matrix to Data Frame =============================
(coerce6 <- matrix(1:9, nrow= 3))
is.matrix(coerce6)
(coerce7 <- as.data.frame(matrix(1:9, nrow= 3)))
is.data.frame(coerce7)
# CLEAN UP #################################################
# Clear environment
rm(list = ls())
# Clear console
cat("\014") # ctrl+L
# Clear mind :)
Comments
# Title: Comments and headers
# Wrangling and Visualizing Data
# INSTALL AND LOAD PACKAGES ################################
# Load base packages manually
library(datasets) # For example datasets
# LOAD AND PREPARE DATA ####################################
df <- iris
head(df)
# COMMENT OUT LINES ########################################
# Comment/uncomment lines in RStudio with shift-cmd/ctrl-C
# Use comments to disable commands
hist(df$Sepal.Width,
# col = "#CD0000", # red3
# border = NA, # No borders
main = "Histogram of Sepal Width",
xlab = "Sepal Width (in cm)")
# THIS IS A LEVEL 1 HEADER #################################
## This Is a Level 2 Header ================================
### This is a level 3 header. ------------------------------
# CLEAN UP #################################################
# Clear environment
rm(list = ls())
# Clear packages
detach("package:datasets", unload = TRUE) # For base
# Clear plots
graphics.off() # Clears plots, closes all graphics devices
# Clear console
cat("\014") # ctrl+L
# Clear mind :)
Packages
# Title: Packages for R
# Wrangling and Visualizing Data
# INSTALL AND LOAD PACKAGES ################################
# Install pacman ("package manager") if needed
if (!require("pacman")) install.packages("pacman")
# Load contributed packages with pacman
pacman::p_load(pacman, party, psych, rio, tidyverse)
# pacman: for loading/unloading packages
# party: for decision trees
# psych: for many statistical procedures
# rio: for importing data
# tidyverse: for so many reasons
# Load base packages manually
library(datasets) # For example datasets
# LOAD AND PREPARE DATA ####################################
# Save data to "df" (for "data frame")
# Rename outcome as "y" (if it helps)
# Specify outcome with df$y
# Import CSV files with readr::read_csv() from tidyverse
(df <- read_csv("data/StateData.csv"))
# Import other formats with rio::import() from rio
(df <- import("data/StateData.xlsx") %>% as_tibble())
# or...
df <- import("data/StateData.xlsx") %>%
as_tibble() %>%
select(state_code,
psychRegions,
instagram:modernDance) %>%
mutate(psychRegions = as.factor(psychRegions)) %>%
rename(y = psychRegions) %>%
print()
# CLEAN UP #################################################
# Clear environment
rm(list = ls())
# Clear packages
p_unload(all) # Remove all add-ons
detach("package:datasets", unload = TRUE) # For base
# Clear console
cat("\014") # ctrl+L
# Clear mind :)