饼图数据 table 中的 R 分组值

R grouping values in data table for pie chart

我有一些关于过程质量的统计数据,以 table 形式呈现(结果 >> 所有案例的百分比)

# (df <- read.csv(...)
detection_quality_algo1_pupil <- table(df$pupeuclid1)
detection_quality_algo1_pupil_percent = round(
        detection_quality_algo1_pupil[names(detection_quality_algo1_pupil)] 
        / nrow(df) 
        * 100
   , digits = 1)

0 - 16.4%

1 - 50.6%

2 - 12.0%

3 - 2.4%

等等

> detection_quality_algo1_pupil_percent

    0    1    2    3    4    5   10   11   12   13   16   17   20   21   22   23   24   25   27   29   30   31   32   33 
16.4 50.6 12.0  2.4  0.5  0.6  0.9  0.6  0.3  0.1  0.3  0.1  0.1  0.1  0.1  0.3  0.3  0.1  0.1  0.3  0.1  0.3  0.1  0.1 
  37   40   43   45   50   53   54   55   56   59  102  104  106  107  112  114  131  132  134  136  138  139  141  142 
 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.4  0.1  0.3  0.1  0.1  0.3  0.1  0.1 
 145  149  150  151  152  153  154  155  156  157  158  160  161  164  166  167  168  169  170  171  173  175  187  191 
 0.3  0.6  0.1  0.3  0.1  0.5  0.3  0.1  0.1  0.4  0.1  0.1  0.4  0.1  0.1  0.3  0.3  0.3  0.1  0.3  0.1  0.1  0.1  0.1 
 194  208 
 0.1  0.1 

> pie(detection_quality_algo1_pupil_percent)

我的目标是将值 > 3 的结果分组到一个名为“> 3”的大组中,并在饼图上显示结果。

我认为这是关于在源上应用一些过滤器 table... 我该怎么做?

尝试:

x <- rep(0:5,c(20,50,20,4,4,2))
pie(table(x))                                  # 3 small groups
pie(table(cut(x, c(-Inf,0:2,Inf),labels=0:3))) # 1 group representing the 3 small groups

而且,正如@sebpardo 指出的那样,饼图很糟糕。改为使用条形图:

barplot(table(cut(x, c(-Inf,0:2,Inf),labels=0:3)))

您可以尝试使用 mutate 向数据框添加新的 'collapsed' 列,例如

library(dplyr)
df <- mutate(df, new_group = ifelse(group > 3, ">3", group)

我同意@sebpardo 在上面评论中的建议,即有比饼图更好的数据可视化方法。甚至帮助页面也反对他们(参见 ?pie):

"Pie charts are a very bad way of displaying information. [...]"