R将data.frame拆分为sub data.frames到ggplot2中的facet

时间:2013-05-23 12:01:58

标签: r ggplot2

我有一个data.frame(追加)~~ 537行,我想从中绘制一些直方图。我想将数据框细分为50或100的块,并使用facet_wrap中的ggplot2并排绘制直方图。绘图没有问题,但我不确定在R中处理这个简单任务的最佳方法是什么。我知道我可以在data.frame中添加一个额外的列,例如data $ ID = 1,它将为ID创建1所有行。是否有一些方便的功能,我可以设置data[1:50,]$ID = 1,data[51:100,]$ID = 2等但是更优雅的方式

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")

1 个答案:

答案 0 :(得分:1)

您可以像这样创建data.frame列表:

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

例如,使用您的数据,我创建了一个data.frame列表,每个都有5行:

 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