R:绘制子串的计数

时间:2016-04-21 16:52:14

标签: r ggplot2 data-manipulation

我有一个如下所示的数据框:

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”的数量。

1 个答案:

答案 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_wrapfacet_gridgeom_bar(position = "dodge")或<{p}}的示例。

ggplot(tidy.df, aes(x = ent, fill = gender)) +
  geom_bar(position = "dodge")

Plot