R Code Snippets
Table of Contents
R Code Snippets
Grouping and counting objects
Using table
df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9) tt <- table(df$name) tt
a b c 3 2 4
Using dplyr
library(dplyr) df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9) tt <- df %>% group_by(name) %>% summarize( count = n() ) tt
# A tibble: 3 × 2 name count <chr> <int> 1 a 3 2 b 2 3 c 4
ggplot2
Adding labels in a multi-faceted graph
I originally wrote this code to answer a question on Stackoverflow. Another user was quicker than me (and provided a more beautiful answer) but I want to save my version.
df <- data.frame( x2=rnorm(100), y2=rnorm(100), type = c(rep("type a", 50), rep("type b", 50)), kind = rep(LETTERS[1:5],10)) library(ggplot2) library(plyr) quadrant_labels <- function(dat) { group_size = nrow(dat) lq1 <- nrow( subset( dat, x2 >= 0 & y2 >= 0)) lq2 <- nrow( subset( dat, x2 >= 0 & y2 < 0)) lq3 <- nrow( subset( dat, x2 < 0 & y2 < 0)) lq4 <- nrow( subset( dat, x2 < 0 & y2 >= 0)) data.frame(quadrant1 = lq1 / group_size, quadrant2 = lq2 / group_size, quadrant3 = lq3 / group_size, quadrant4 = lq4 / group_size ) } labels <- ddply(df, c("type", "kind"), quadrant_labels) ggplot(df, aes(x2, y2)) + geom_point() + geom_vline(xintercept = 0) + geom_hline(yintercept = 0) + geom_text(data = labels, x = 1, y = 1, aes(label = quadrant1), alpha=.40, size=5) + geom_text(data = labels, x = 1, y = -1, aes(label = quadrant2), alpha=.40, size=5) + geom_text(data = labels, x = -1, y = -1, aes(label = quadrant3), alpha=.40, size=5) + geom_text(data = labels, x = -1, y = 1, aes(label = quadrant4), alpha=.40, size=5) + facet_grid(type~kind)
Other sources of information
Cleaning the table
A small case study for tidyverse functions (separate
, pivot_longer
and pivot_wider
, among the others)