说,我有一个数据集,我在其中计算字母a
到z
的出现次数。
我想在R中绘制一个饼形图,其中显示了前2个计数与其他计数。我有以下代码生成数据集并计算字母a到z的出现次数。
library(dplyr)
set.seed(1)
dat <- data.frame(ID = sample(letters,100,rep=TRUE))
dat %>%
group_by(ID) %>%
summarise(no_rows = length(ID))
它的输出看起来像这样:
ID no_rows
1 a 2
2 b 3
3 c 3
4 d 3
5 e 2
6 f 4
7 g 6
8 h 1
9 i 6
10 j 5
11 k 6
12 l 4
13 m 7
14 n 2
15 o 2
16 p 2
17 q 5
18 r 4
19 s 5
20 t 3
21 u 8
22 v 4
23 w 5
24 x 4
25 y 3
26 z 1
排名前2的结果是第13 (no_rows=7)
和21 (no_rows=8)
行。因此,我的饼形图应该包含前2个(7+8=15)
和其他(其余no_rows
的总和)。
我是R和绘图的新手。
答案 0 :(得分:1)
我认为您正在寻找类似以下的内容。要点是ungroup
,以便对数据进行排序,然后arrange
对所需的方式进行排序。然后,我使用了case_when
和row_number
来给数据添加标签。然后ggplot
馅饼。虽然我不喜欢饼图:)
library(dplyr)
set.seed(1)
dat <- data.frame(ID = sample(letters,100,rep=TRUE), stringsAsFactors = FALSE)
dat %>%
group_by(ID) %>%
summarise(no_rows = length(ID)) %>%
ungroup %>%
arrange(desc(no_rows) ) %>%
mutate( label = case_when(row_number() <= 2 ~ ID,
row_number() > 2 ~ 'all other')) ->
data_to_plot
library(ggplot2)
ggplot(data_to_plot, aes(x=factor(1), fill=label))+
geom_bar(width = 1)+
coord_polar("y")
由reprex package(v0.2.0)于2018-07-14创建。