简体   繁体   中英

R splitting data.frame into sub data.frames to facet in ggplot2

I have a data.frame (appended) with ~537 rows from which I would like to plot some histograms. I would like to subdivide the data frame into say chunks of 50 or 100 and plot the histograms side by side using facet_wrap in ggplot2 . The plotting is no problem but I am unsure what is the best way to approach this simple task in R. I know I can add an additional column to the data.frame such as data$ID = 1 which will create an ID of 1 for all rows. Is there some convenient function where I could set data[1:50,]$ID = 1, data[51:100,]$ID = 2 etc but in a more elegant way

structure(list(stress_score_delta = c(1L, 1L, 0L, -3L, 0L, 0L, 
    0L, -2L, 0L, -5L, -3L, -3L, -4L, 0L, -1L, 0L, 0L, -3L, -4L, 1L, 
    -3L, -4L, -5L, -1L, -2L, -3L, -1L, -2L, -3L, -10L, -5L, 1L, -2L, 
    -1L, -2L, -2L, 0L, -3L, -3L, 0L, -1L, -1L, 2L, -2L, -3L, -1L, 
    0L, 0L, -2L, -13L, 1L, -1L, -1L, -3L, -1L, 4L, 2L, 0L, -2L, 0L, 
    -4L, 2L, -1L, -2L, -3L, -2L, -4L, 1L, 0L, 2L, 2L, 0L, 2L, 2L, 
    0L, 1L, 3L, -2L, 3L, 2L, 0L, 1L, -2L, 2L, -2L, -2L, 0L, 0L, 1L, 
    -1L, -2L, -1L, 2L, 0L, -2L, 0L, -4L, -6L, -1L, -1L, -2L, -1L, 
    -3L, -1L, -2L, 0L, -1L, 0L, -1L, -4L, -4L, 0L, -5L, -3L, -4L, 
    -1L, -1L, 2L, 1L, -9L, -5L, NA, -5L, -4L, -6L, -2L, -7L, -3L, 
    -2L, -5L, -1L, -4L, -3L, 1L, -6L, -8L, -3L, 0L, 3L, -1L, -3L, 
    -3L, -3L, -4L, -5L, -4L, -2L, 1L, -3L, -1L, 0L, -6L, -1L, -11L, 
    -11L, -7L, 2L, 0L, -2L, 0L, -2L, 5L, -4L, 0L, -1L, 2L, 0L, -1L, 
    -2L, -7L, -2L, -2L, 0L, 4L, -5L, 0L, -5L, -3L, -2L, -2L, -2L, 
    -6L, -1L, 0L, -1L, -2L, -1L, -2L, -2L, -1L, -5L, 1L, 2L, -1L, 
    2L, -1L, 3L, -1L, -2L, -2L, 0L, 0L, -3L, -2L, -1L, -1L, -2L, 
    0L, -3L, -1L, -5L, -1L, -2L, -1L, -5L, -2L, 0L, 0L, -1L, -1L, 
    -1L, 2L, -1L, -4L, -2L, -4L, -2L, -1L, -7L, -3L, 0L, -1L, -3L, 
    -1L, -2L, -1L, -1L, 0L, -5L, -1L, -4L, -12L, -3L, -2L, 0L, -2L, 
    -4L, 0L, -4L, -2L, -2L, -1L, 0L, -5L, 0L, -3L, -3L, 0L, -1L, 
    0L, 2L, 1L, -6L, 1L, -2L, -1L, -3L, -4L, -2L, -3L, -1L, -1L, 
    0L, -4L, -2L, 0L, -1L, -6L, -1L, -2L, -1L, -4L, 2L, -1L, -2L, 
    -1L, -4L, -2L, -2L, -3L, -4L, -2L, -4L, -3L, -2L, -3L, 0L, -4L, 
    0L, -10L, -3L, -5L, -2L, -2L, -2L, -6L, -2L, -4L, 2L, 3L, 0L, 
    0L, 4L, -1L, -1L, -3L, -1L, 2L, -1L, -3L, -3L, -3L, -5L, -7L, 
    -5L, -4L, -2L, -3L, 4L, -2L, 1L, 0L, -1L, -1L, -2L, 1L, -10L, 
    0L, -5L, -2L, 0L, -3L, -5L, 4L, -1L, 1L, 0L, -1L, 1L, -2L, 3L, 
    -1L, -1L, -3L, -5L, -2L, -3L, 2L, -4L, -1L, -1L, 0L, 0L, -3L, 
    0L, -2L, -2L, -6L, -5L, 0L, 1L, -1L, 0L, 0L, -1L, 2L, -1L, -1L, 
    0L, -2L, -2L, -5L, -1L, 0L, -1L, -4L, -4L, -3L, -7L, -3L, -1L, 
    -1L, -2L, -2L, 0L, 1L, 2L, -1L, -2L, NA, NA, 0L, 1L, NA, 1L, 
    -1L, 1L, -3L, -1L, 1L, -4L, -2L, 2L, -5L, -1L, -1L, 0L, -2L, 
    -2L, 2L, -2L, -1L, -1L, -1L, 1L, -3L, 0L, -1L, -1L, -2L, 1L, 
    -2L, -1L, -1L, -2L, -1L, -1L, -3L, -11L, -2L, -1L, -1L, -3L, 
    0L, -1L, 0L, 1L, 4L, 0L, -1L, -1L, -4L, -1L, -3L, -2L, -1L, -2L, 
    0L, -4L, 0L, -5L, -1L, -2L, -3L, -1L, -5L, 0L, 0L, 0L, -1L, -2L, 
    0L, 0L, 1L, 2L, -2L, 1L, 0L, 1L, 0L, 1L, 0L, -2L, -5L, -3L, -1L, 
    -1L, -1L, -2L, 0L, -1L, -2L, 0L, -1L, 1L, -5L, -3L, -3L, 0L, 
    -7L, -1L, 2L, 1L, -1L, -3L, -3L, 0L, 0L, -1L, -4L, -1L, 0L, -1L, 
    -4L, 0L, -10L, 0L, 0L, 1L, -3L, -1L, -2L, -8L, -2L, 0L, -3L, 
    -1L, 0L, 0L, -2L, -5L, -4L, -1L, -2L, -2L, -1L, -1L), isch_score_delta = c(0L, 
    0L, 0L, -1L, 0L, 0L, 1L, 1L, 3L, 0L, 1L, 1L, 0L, 0L, 2L, 0L, 
    1L, -2L, 1L, -1L, -1L, 2L, 0L, 0L, 0L, 0L, -1L, -2L, -2L, -2L, 
    -4L, 0L, -2L, -2L, -1L, 3L, 0L, -2L, -1L, -1L, 2L, 0L, 1L, -3L, 
    0L, 0L, 3L, -1L, -2L, 0L, 0L, -1L, 0L, -4L, 1L, -3L, 2L, 2L, 
    0L, 0L, -3L, 1L, 0L, 0L, -1L, -2L, -5L, 0L, -1L, 0L, -1L, 0L, 
    3L, 2L, -1L, 0L, 1L, 1L, 3L, 3L, -1L, -1L, 0L, 3L, 8L, 0L, 1L, 
    2L, 4L, 0L, -2L, 1L, 0L, 2L, -1L, 0L, 2L, -2L, 0L, -1L, 2L, 0L, 
    -2L, -2L, 3L, 0L, 3L, 2L, -2L, -2L, -2L, 3L, 2L, 0L, 0L, -1L, 
    1L, 4L, 1L, -4L, -2L, NA, -1L, -3L, -2L, -2L, -3L, 0L, 1L, -3L, 
    0L, -4L, 0L, 1L, -2L, 0L, -1L, 1L, 0L, 3L, -3L, -2L, -2L, -1L, 
    -1L, -4L, -1L, 1L, -2L, -2L, 1L, -1L, -1L, -4L, -5L, -9L, -2L, 
    3L, -2L, 1L, 0L, 7L, 0L, 1L, 0L, 3L, 2L, 1L, -3L, 0L, -1L, -2L, 
    2L, 6L, 1L, 1L, -1L, -1L, -1L, 0L, 0L, -3L, -2L, 1L, 0L, 0L, 
    1L, 0L, -1L, 0L, -4L, 0L, 0L, 0L, 1L, -1L, -3L, 1L, -5L, 0L, 
    0L, 0L, -1L, 2L, 0L, 0L, 0L, 2L, 0L, 3L, 0L, 0L, -1L, 0L, -1L, 
    0L, 0L, 1L, 0L, 0L, -1L, 2L, 0L, 0L, 1L, -1L, 0L, 2L, -3L, -1L, 
    1L, 0L, -1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, -1L, 0L, 
    -2L, 2L, 2L, 0L, -2L, 1L, 1L, -1L, -2L, 0L, -1L, -3L, 0L, 1L, 
    -1L, 2L, -1L, -7L, 0L, 1L, 1L, -1L, 0L, 0L, 1L, 0L, 1L, -1L, 
    -2L, 0L, 0L, 2L, 0L, 1L, -6L, -1L, 0L, 5L, 0L, -5L, 0L, 2L, 0L, 
    -1L, 3L, -2L, -1L, -4L, -2L, -2L, -1L, 1L, -1L, 2L, -3L, -4L, 
    -2L, -2L, -2L, -2L, -6L, 0L, 1L, 0L, 0L, 0L, 2L, 5L, 2L, 0L, 
    0L, 1L, 5L, 0L, -2L, 3L, -1L, -1L, 0L, 0L, 0L, -1L, 0L, 2L, 2L, 
    2L, 1L, -1L, 0L, -1L, 2L, -6L, 0L, -1L, -3L, -1L, 0L, -3L, 2L, 
    0L, 0L, 0L, 0L, -4L, 0L, 2L, -1L, 2L, -2L, -2L, 1L, -1L, 2L, 
    -2L, 0L, -2L, 2L, 2L, 1L, 0L, 1L, -2L, -1L, 1L, 2L, 0L, 0L, 0L, 
    4L, -1L, 2L, 0L, -2L, 0L, 0L, -1L, -3L, 1L, -1L, 1L, 0L, 2L, 
    0L, 2L, -1L, 3L, 0L, 0L, -3L, -1L, 4L, 1L, -2L, 0L, NA, NA, 1L, 
    0L, NA, 2L, 2L, -1L, 1L, 2L, 0L, -5L, -3L, 1L, -1L, 0L, 0L, -1L, 
    0L, -2L, 2L, 1L, -1L, -1L, -1L, -1L, -2L, 0L, 1L, 0L, 0L, 1L, 
    0L, 0L, 0L, 0L, -1L, -1L, -1L, 0L, -2L, 3L, 1L, 0L, 0L, -2L, 
    0L, 2L, 1L, 2L, -1L, -1L, -1L, 1L, -1L, -2L, -1L, 0L, 0L, -1L, 
    -1L, -2L, -1L, -1L, 1L, 0L, -2L, 0L, 0L, 1L, 0L, 0L, 2L, -1L, 
    1L, 2L, 1L, 0L, 1L, 2L, 0L, 1L, 1L, 0L, -1L, -1L, 1L, 2L, 0L, 
    0L, 1L, 0L, 0L, 1L, -1L, 1L, -2L, 0L, -1L, 0L, -4L, 1L, 3L, 1L, 
    -2L, -2L, 0L, 0L, 1L, -2L, -4L, -1L, 2L, -1L, -2L, 0L, 0L, 1L, 
    3L, 2L, -2L, 1L, 0L, -3L, -1L, 0L, 0L, -1L, 1L, 1L, -1L, -2L, 
    2L, 1L, 0L, -1L, 0L, -1L), num = 1:537), .Names = c("stress_score_delta", 
    "isch_score_delta", "num"), row.names = c(NA, -537L), class = "data.frame")
    > data <- data.frame(read.csv("~/Downloads/sas_reporting_hist.csv"))
    > dput(data)
    structure(list(stress_score_delta = c(1L, 1L, 0L, -3L, 0L, 0L, 
    0L, -2L, 0L, -5L, -3L, -3L, -4L, 0L, -1L, 0L, 0L, -3L, -4L, 1L, 
    -3L, -4L, -5L, -1L, -2L, -3L, -1L, -2L, -3L, -10L, -5L, 1L, -2L, 
    -1L, -2L, -2L, 0L, -3L, -3L, 0L, -1L, -1L, 2L, -2L, -3L, -1L, 
    0L, 0L, -2L, -13L, 1L, -1L, -1L, -3L, -1L, 4L, 2L, 0L, -2L, 0L, 
    -4L, 2L, -1L, -2L, -3L, -2L, -4L, 1L, 0L, 2L, 2L, 0L, 2L, 2L, 
    0L, 1L, 3L, -2L, 3L, 2L, 0L, 1L, -2L, 2L, -2L, -2L, 0L, 0L, 1L, 
    -1L, -2L, -1L, 2L, 0L, -2L, 0L, -4L, -6L, -1L, -1L, -2L, -1L, 
    -3L, -1L, -2L, 0L, -1L, 0L, -1L, -4L, -4L, 0L, -5L, -3L, -4L, 
    -1L, -1L, 2L, 1L, -9L, -5L, NA, -5L, -4L, -6L, -2L, -7L, -3L, 
    -2L, -5L, -1L, -4L, -3L, 1L, -6L, -8L, -3L, 0L, 3L, -1L, -3L, 
    -3L, -3L, -4L, -5L, -4L, -2L, 1L, -3L, -1L, 0L, -6L, -1L, -11L, 
    -11L, -7L, 2L, 0L, -2L, 0L, -2L, 5L, -4L, 0L, -1L, 2L, 0L, -1L, 
    -2L, -7L, -2L, -2L, 0L, 4L, -5L, 0L, -5L, -3L, -2L, -2L, -2L, 
    -6L, -1L, 0L, -1L, -2L, -1L, -2L, -2L, -1L, -5L, 1L, 2L, -1L, 
    2L, -1L, 3L, -1L, -2L, -2L, 0L, 0L, -3L, -2L, -1L, -1L, -2L, 
    0L, -3L, -1L, -5L, -1L, -2L, -1L, -5L, -2L, 0L, 0L, -1L, -1L, 
    -1L, 2L, -1L, -4L, -2L, -4L, -2L, -1L, -7L, -3L, 0L, -1L, -3L, 
    -1L, -2L, -1L, -1L, 0L, -5L, -1L, -4L, -12L, -3L, -2L, 0L, -2L, 
    -4L, 0L, -4L, -2L, -2L, -1L, 0L, -5L, 0L, -3L, -3L, 0L, -1L, 
    0L, 2L, 1L, -6L, 1L, -2L, -1L, -3L, -4L, -2L, -3L, -1L, -1L, 
    0L, -4L, -2L, 0L, -1L, -6L, -1L, -2L, -1L, -4L, 2L, -1L, -2L, 
    -1L, -4L, -2L, -2L, -3L, -4L, -2L, -4L, -3L, -2L, -3L, 0L, -4L, 
    0L, -10L, -3L, -5L, -2L, -2L, -2L, -6L, -2L, -4L, 2L, 3L, 0L, 
    0L, 4L, -1L, -1L, -3L, -1L, 2L, -1L, -3L, -3L, -3L, -5L, -7L, 
    -5L, -4L, -2L, -3L, 4L, -2L, 1L, 0L, -1L, -1L, -2L, 1L, -10L, 
    0L, -5L, -2L, 0L, -3L, -5L, 4L, -1L, 1L, 0L, -1L, 1L, -2L, 3L, 
    -1L, -1L, -3L, -5L, -2L, -3L, 2L, -4L, -1L, -1L, 0L, 0L, -3L, 
    0L, -2L, -2L, -6L, -5L, 0L, 1L, -1L, 0L, 0L, -1L, 2L, -1L, -1L, 
    0L, -2L, -2L, -5L, -1L, 0L, -1L, -4L, -4L, -3L, -7L, -3L, -1L, 
    -1L, -2L, -2L, 0L, 1L, 2L, -1L, -2L, NA, NA, 0L, 1L, NA, 1L, 
    -1L, 1L, -3L, -1L, 1L, -4L, -2L, 2L, -5L, -1L, -1L, 0L, -2L, 
    -2L, 2L, -2L, -1L, -1L, -1L, 1L, -3L, 0L, -1L, -1L, -2L, 1L, 
    -2L, -1L, -1L, -2L, -1L, -1L, -3L, -11L, -2L, -1L, -1L, -3L, 
    0L, -1L, 0L, 1L, 4L, 0L, -1L, -1L, -4L, -1L, -3L, -2L, -1L, -2L, 
    0L, -4L, 0L, -5L, -1L, -2L, -3L, -1L, -5L, 0L, 0L, 0L, -1L, -2L, 
    0L, 0L, 1L, 2L, -2L, 1L, 0L, 1L, 0L, 1L, 0L, -2L, -5L, -3L, -1L, 
    -1L, -1L, -2L, 0L, -1L, -2L, 0L, -1L, 1L, -5L, -3L, -3L, 0L, 
    -7L, -1L, 2L, 1L, -1L, -3L, -3L, 0L, 0L, -1L, -4L, -1L, 0L, -1L, 
    -4L, 0L, -10L, 0L, 0L, 1L, -3L, -1L, -2L, -8L, -2L, 0L, -3L, 
    -1L, 0L, 0L, -2L, -5L, -4L, -1L, -2L, -2L, -1L, -1L), isch_score_delta = c(0L, 
    0L, 0L, -1L, 0L, 0L, 1L, 1L, 3L, 0L, 1L, 1L, 0L, 0L, 2L, 0L, 
    1L, -2L, 1L, -1L, -1L, 2L, 0L, 0L, 0L, 0L, -1L, -2L, -2L, -2L, 
    -4L, 0L, -2L, -2L, -1L, 3L, 0L, -2L, -1L, -1L, 2L, 0L, 1L, -3L, 
    0L, 0L, 3L, -1L, -2L, 0L, 0L, -1L, 0L, -4L, 1L, -3L, 2L, 2L, 
    0L, 0L, -3L, 1L, 0L, 0L, -1L, -2L, -5L, 0L, -1L, 0L, -1L, 0L, 
    3L, 2L, -1L, 0L, 1L, 1L, 3L, 3L, -1L, -1L, 0L, 3L, 8L, 0L, 1L, 
    2L, 4L, 0L, -2L, 1L, 0L, 2L, -1L, 0L, 2L, -2L, 0L, -1L, 2L, 0L, 
    -2L, -2L, 3L, 0L, 3L, 2L, -2L, -2L, -2L, 3L, 2L, 0L, 0L, -1L, 
    1L, 4L, 1L, -4L, -2L, NA, -1L, -3L, -2L, -2L, -3L, 0L, 1L, -3L, 
    0L, -4L, 0L, 1L, -2L, 0L, -1L, 1L, 0L, 3L, -3L, -2L, -2L, -1L, 
    -1L, -4L, -1L, 1L, -2L, -2L, 1L, -1L, -1L, -4L, -5L, -9L, -2L, 
    3L, -2L, 1L, 0L, 7L, 0L, 1L, 0L, 3L, 2L, 1L, -3L, 0L, -1L, -2L, 
    2L, 6L, 1L, 1L, -1L, -1L, -1L, 0L, 0L, -3L, -2L, 1L, 0L, 0L, 
    1L, 0L, -1L, 0L, -4L, 0L, 0L, 0L, 1L, -1L, -3L, 1L, -5L, 0L, 
    0L, 0L, -1L, 2L, 0L, 0L, 0L, 2L, 0L, 3L, 0L, 0L, -1L, 0L, -1L, 
    0L, 0L, 1L, 0L, 0L, -1L, 2L, 0L, 0L, 1L, -1L, 0L, 2L, -3L, -1L, 
    1L, 0L, -1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, -1L, 0L, 
    -2L, 2L, 2L, 0L, -2L, 1L, 1L, -1L, -2L, 0L, -1L, -3L, 0L, 1L, 
    -1L, 2L, -1L, -7L, 0L, 1L, 1L, -1L, 0L, 0L, 1L, 0L, 1L, -1L, 
    -2L, 0L, 0L, 2L, 0L, 1L, -6L, -1L, 0L, 5L, 0L, -5L, 0L, 2L, 0L, 
    -1L, 3L, -2L, -1L, -4L, -2L, -2L, -1L, 1L, -1L, 2L, -3L, -4L, 
    -2L, -2L, -2L, -2L, -6L, 0L, 1L, 0L, 0L, 0L, 2L, 5L, 2L, 0L, 
    0L, 1L, 5L, 0L, -2L, 3L, -1L, -1L, 0L, 0L, 0L, -1L, 0L, 2L, 2L, 
    2L, 1L, -1L, 0L, -1L, 2L, -6L, 0L, -1L, -3L, -1L, 0L, -3L, 2L, 
    0L, 0L, 0L, 0L, -4L, 0L, 2L, -1L, 2L, -2L, -2L, 1L, -1L, 2L, 
    -2L, 0L, -2L, 2L, 2L, 1L, 0L, 1L, -2L, -1L, 1L, 2L, 0L, 0L, 0L, 
    4L, -1L, 2L, 0L, -2L, 0L, 0L, -1L, -3L, 1L, -1L, 1L, 0L, 2L, 
    0L, 2L, -1L, 3L, 0L, 0L, -3L, -1L, 4L, 1L, -2L, 0L, NA, NA, 1L, 
    0L, NA, 2L, 2L, -1L, 1L, 2L, 0L, -5L, -3L, 1L, -1L, 0L, 0L, -1L, 
    0L, -2L, 2L, 1L, -1L, -1L, -1L, -1L, -2L, 0L, 1L, 0L, 0L, 1L, 
    0L, 0L, 0L, 0L, -1L, -1L, -1L, 0L, -2L, 3L, 1L, 0L, 0L, -2L, 
    0L, 2L, 1L, 2L, -1L, -1L, -1L, 1L, -1L, -2L, -1L, 0L, 0L, -1L, 
    -1L, -2L, -1L, -1L, 1L, 0L, -2L, 0L, 0L, 1L, 0L, 0L, 2L, -1L, 
    1L, 2L, 1L, 0L, 1L, 2L, 0L, 1L, 1L, 0L, -1L, -1L, 1L, 2L, 0L, 
    0L, 1L, 0L, 0L, 1L, -1L, 1L, -2L, 0L, -1L, 0L, -4L, 1L, 3L, 1L, 
    -2L, -2L, 0L, 0L, 1L, -2L, -4L, -1L, 2L, -1L, -2L, 0L, 0L, 1L, 
    3L, 2L, -2L, 1L, 0L, -3L, -1L, 0L, 0L, -1L, 1L, 1L, -1L, -2L, 
    2L, 1L, 0L, -1L, 0L, -1L)), .Names = c("stress_score_delta", 
    "isch_score_delta"), row.names = c(NA, -537L), class = "data.frame")

You can create a list of data.frame like this :

split(dat,cumsum(seq(nrow(dat)) %% 51 == 0))  ## each data.frame has 50 rows

For example using your data, I create a list of data.frame each has 5 rows:

 head(split(dat,cumsum(seq(nrow(dat)) %% 6 == 0)))
$`0`
  stress_score_delta isch_score_delta num
1                  1                0   1
2                  1                0   2
3                  0                0   3
4                 -3               -1   4
5                  0                0   5

$`1`
   stress_score_delta isch_score_delta num
6                   0                0   6
7                   0                1   7
8                  -2                1   8
9                   0                3   9
10                 -5                0  10
11                 -3                1  11

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM