## ---- echo = FALSE, message = FALSE-------------------------------------------
knitr::opts_chunk$set(collapse = T, comment = "#>")
options(tibble.print_min = 4, tibble.print_max = 4)
## ----setup, message = FALSE---------------------------------------------------
library(dplyr)
mtcars <- as_tibble(mtcars)
iris <- as_tibble(iris)
## -----------------------------------------------------------------------------
mtcars %>% arrange(cyl, disp)
## -----------------------------------------------------------------------------
mtcars %>% arrange(desc(cyl), desc(disp))
## -----------------------------------------------------------------------------
mtcars[order(mtcars$cyl, mtcars$disp), , drop = FALSE]
## ---- results = FALSE---------------------------------------------------------
mtcars[order(mtcars$cyl, mtcars$disp, decreasing = TRUE), , drop = FALSE]
mtcars[order(-mtcars$cyl, -mtcars$disp), , drop = FALSE]
## -----------------------------------------------------------------------------
df <- tibble(
x = sample(10, 100, rep = TRUE),
y = sample(10, 100, rep = TRUE)
)
df %>% distinct(x) # selected columns
df %>% distinct(x, .keep_all = TRUE) # whole data frame
## -----------------------------------------------------------------------------
unique(df["x"]) # selected columns
df[!duplicated(df$x), , drop = FALSE] # whole data frame
## -----------------------------------------------------------------------------
starwars %>% filter(species == "Human")
starwars %>% filter(mass > 1000)
starwars %>% filter(hair_color == "none" & eye_color == "black")
## -----------------------------------------------------------------------------
subset(starwars, species == "Human")
subset(starwars, mass > 1000)
subset(starwars, hair_color == "none" & eye_color == "black")
## -----------------------------------------------------------------------------
starwars[which(starwars$species == "Human"), , drop = FALSE]
starwars[which(starwars$mass > 1000), , drop = FALSE]
starwars[which(starwars$hair_color == "none" & starwars$eye_color == "black"), , drop = FALSE]
## -----------------------------------------------------------------------------
df %>% mutate(z = x + y, z2 = z ^ 2)
## -----------------------------------------------------------------------------
head(transform(df, z = x + y, z2 = (x + y) ^ 2))
## -----------------------------------------------------------------------------
mtcars$cyl2 <- mtcars$cyl * 2
mtcars$cyl4 <- mtcars$cyl2 * 2
## -----------------------------------------------------------------------------
gf <- tibble(g = c(1, 1, 2, 2), x = c(0.5, 1.5, 2.5, 3.5))
gf %>%
group_by(g) %>%
mutate(x_mean = mean(x), x_rank = rank(x))
## -----------------------------------------------------------------------------
transform(gf,
x_mean = ave(x, g, FUN = mean),
x_rank = ave(x, g, FUN = rank)
)
## -----------------------------------------------------------------------------
mtcars %>% pull(1)
mtcars %>% pull(cyl)
## -----------------------------------------------------------------------------
mtcars[[1]]
mtcars$cyl
## -----------------------------------------------------------------------------
# to front
mtcars %>% relocate(gear, carb)
# to back
mtcars %>% relocate(mpg, cyl, .after = last_col())
## -----------------------------------------------------------------------------
mtcars[union(c("gear", "carb"), names(mtcars))]
to_back <- c("mpg", "cyl")
mtcars[c(setdiff(names(mtcars), to_back), to_back)]
## -----------------------------------------------------------------------------
iris %>% rename(sepal_length = Sepal.Length, sepal_width = 2)
## -----------------------------------------------------------------------------
iris2 <- iris
names(iris2)[2] <- "sepal_width"
## -----------------------------------------------------------------------------
names(iris2)[names(iris2) == "Sepal.Length"] <- "sepal_length"
## -----------------------------------------------------------------------------
iris %>% rename_with(toupper)
## -----------------------------------------------------------------------------
setNames(iris, toupper(names(iris)))
## -----------------------------------------------------------------------------
iris %>% select(1:3)
iris %>% select(Species, Sepal.Length)
iris %>% select(starts_with("Petal"))
iris %>% select(where(is.factor))
## -----------------------------------------------------------------------------
iris[1:3] # single argument selects columns; never drops
iris[1:3, , drop = FALSE]
## -----------------------------------------------------------------------------
iris[c("Species", "Sepal.Length")]
subset(iris, select = c(Species, Sepal.Length))
## -----------------------------------------------------------------------------
iris[grep("^Petal", names(iris))]
## -----------------------------------------------------------------------------
Filter(is.factor, iris)
## -----------------------------------------------------------------------------
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(disp), n = n())
## -----------------------------------------------------------------------------
mtcars_by <- by(mtcars, mtcars$cyl, function(df) {
with(df, data.frame(cyl = cyl[[1]], mean = mean(disp), n = nrow(df)))
})
do.call(rbind, mtcars_by)
## -----------------------------------------------------------------------------
agg <- aggregate(disp ~ cyl, mtcars, function(x) c(mean = mean(x), n = length(x)))
agg
## -----------------------------------------------------------------------------
str(agg)
## -----------------------------------------------------------------------------
slice(mtcars, 25:n())
## -----------------------------------------------------------------------------
mtcars[25:nrow(mtcars), , drop = FALSE]
## -----------------------------------------------------------------------------
band_members %>% semi_join(band_instruments)
band_members %>% anti_join(band_instruments)
## -----------------------------------------------------------------------------
band_members[band_members$name %in% band_instruments$name, , drop = FALSE]
band_members[!band_members$name %in% band_instruments$name, , drop = FALSE]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.