Data Frames & Tibbles
A data frame is a list of equal-length vectors (columns) — R's table.
13.1 Data frames
A data frame is a list of equal-length vectors (columns) — R's table.
df <- data.frame(
name = c("Ann", "Bob", "Cara"),
age = c(30, 25, 35),
city = c("Oslo", "Rome", "Oslo")
)
str(df); summary(df); head(df); nrow(df); ncol(df); dim(df); names(df)
df$age # a column (vector)
df[["age"]]
df[2, ] # second row
df[, c("name", "age")] # columns by name
df[df$age > 26, ] # filter rows
subset(df, age > 26, select = c(name, city))
df[order(-df$age), ] # sort descending by age
df$senior <- df$age > 30 # add column
df$senior <- NULL # remove column
df <- transform(df, age_months = age * 12)
with(df, mean(age))
rbind(df, data.frame(name = "Dan", age = 40, city = "Lima", age_months = 480))
merge(df, data.frame(city = c("Oslo", "Rome"), country = c("NO", "IT")), by = "city")
aggregate(age ~ city, data = df, FUN = mean)
split(df, df$city)
unique(df$city); table(df$city)13.2 Built-in datasets
data() # list available datasets
head(mtcars); head(iris); head(airquality); head(ToothGrowth)
library(palmerpenguins); head(penguins)13.3 Tibbles (tidyverse data frames)
Tibbles print nicely (first 10 rows, column types), never convert strings to factors, never partially match column names, and [ always returns a tibble.
library(tibble)
tb <- tibble(x = 1:3, y = x * 2, `odd name` = c("a", "b", "c"))
as_tibble(mtcars, rownames = "car")
tribble(
~name, ~score,
"Ann", 90,
"Bob", 85
)13.4 Inspecting data
glimpse(df) # dplyr: transposed overview
skimr::skim(df) # rich summary
View(df) # spreadsheet viewer in RStudio
dplyr::count(df, city, sort = TRUE)