6

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

Value | 计数
1 | 2
2 | 1

...

代替


1
1
2
...

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

4

4 回答 4

0

我确信有一种方法可以用已经汇总的数据做你想做的事,但如果没有,你可以滥用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 包裹起来,你就应该得到你想要的。我确信有一种更有效/更好的方法可以做到这一点,但这应该对你有用。

于 2011-10-28T18:52:16.003 回答
0

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

例如。

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

于 2013-06-19T06:28:33.457 回答
0

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

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

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

于 2013-05-06T01:56:59.617 回答
0

玩具数据:

(除了Valueand Count,我添加了一个分类变量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)

在此处输入图像描述

于 2018-12-21T10:16:40.047 回答