我有一个如下所示的数据框:
gender <- c("F", "M", "M", "M", "M")
entourage <- c("YC; AD; EL", "YC", "AD; YC", "AD", "EL")
data <- data.frame(gender, entourage)
我想绘制子串“YC”,“AD”和“EL”出现在ggplot中的次数。鉴于性别为“M”,我还想绘制“YC”的数量。
答案 0 :(得分:2)
加载库:
library(tidyr)
library(dplyr)
library(ggplot2)
我认为问题的关键在于将您的数据转换为tidy
格式 - 或者至少可以更容易地进行绘图。创建一个整洁的data.frame
:
tidy.df <- data %>%
mutate(ent = strsplit(as.character(entourage), "; ")) %>%
unnest()
# head(tidy.df)
# gender entourage ent
# (fctr) (fctr) (chr)
# 1 F YC; AD; EL YC
# 2 F YC; AD; EL AD
# 3 F YC; AD; EL EL
# 4 M YC YC
# 5 M AD; YC AD
# 6 M AD; YC YC
然后你有很多绘图选项。查看facet_wrap
和facet_grid
或geom_bar(position = "dodge")
或<{p}}的示例。
ggplot(tidy.df, aes(x = ent, fill = gender)) +
geom_bar(position = "dodge")