饼图数据 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. [...]"
我有一些关于过程质量的统计数据,以 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. [...]"