【问题标题】:Boxplot of pre-aggregated/grouped data in RR中预聚合/分组数据的箱线图
【发布时间】:2011-12-17 12:14:35
【问题描述】:

在 R 中,我想创建一个基于计数数据而不是原始数据的箱线图。所以我的表架构看起来像

价值 |伯爵
1 | 2
2 | 1

...

代替

价值
1
1
2
...

在第二种情况下,我可以简单地做 boxplot(x)

【问题讨论】:

  • 那么你期待什么样的图表。那只是两个计数值,箱线图会很奇怪。您是否在考虑条形图?
  • 这只是示例数据,我的真实数据集还有更多行

标签: r boxplot


【解决方案1】:

玩具数据:

(除了ValueCount,我还添加了一个分类变量Group

set.seed(12345)
df <- data.frame(Value = sample(1:100, 100, replace = T),
                 Count = sample(1:10, 100, replace = T),
                 Group = sample(c("A", "B", "C"), 100, replace = T),
                 stringsAsFactors = F)

使用purrr::pmappurrr::reduce 操作数据框:

library(purrr)
data <- pmap(df, function(Value, Count, Group){
  data.frame(x = rep(Value, Count),
             y = rep(Group, Count))
}) %>% reduce(rbind)

boxplot(x ~ y, data = data)

【讨论】:

    【解决方案2】:

    如果需要另一个变量进行分类,可以使用repdata.frame 的组合作为一种方法

    例如。

    with(data.frame(v1=rep(data$v1,data$count),v2=(data$v2,data$count)),
        boxplot(v1 ~ v2)
    )
    

    【讨论】:

      【解决方案3】:

      我最近通过使用“rep”函数对每列计数使用“apply”函数解决了一个类似的问题:

      > datablock <- apply(countblock[-1], 2, function(x){rep(countblock$value, x)})
      > boxplot(datablock)
      

      ...以上假设您的值位于第一列,后续列包含计数数据。

      【讨论】:

        【解决方案4】:

        我确信有一种方法可以用已经汇总的数据做你想做的事,但如果没有,你可以滥用rep 接受向量的事实:

        > dat <- data.frame(Value = 1:5, Count = sample.int(5))
        > dat
          Value Count
        1     1     1
        2     2     3
        3     3     4
        4     4     2
        5     5     5
        > rep(dat$Value, dat$Count)
         [1] 1 2 2 2 3 3 3 3 4 4 5 5 5 5 5
        

        只需将 boxplot 包裹起来,您就会得到您想要的。我确信有一种更有效/更好的方法可以做到这一点,但这应该适合你。

        【讨论】:

        • 这行得通,但在我的情况下它非常痛苦,因为我想在我的情节中制作多个类别的箱线图(除了值,计数)。但是c'est la vie。感谢您的建议!
        • @John - 不用担心。我的另一个建议是查看 ggplot2。我知道你可以在那里传递预先汇总的数据。抱歉,我不经常使用基本图形:had.co.nz/ggplot2/geom_boxplot.html
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多