网上绘制venn图的案例有太多了,从传统的venn图到venn点图;说白了就是找数据之间的相同与不同,下面通过一个小例子来说明
library(ggvenn)
a <- list(`Set1` = c(1, 3, 5, 7, 9),
`Set2` = c(1, 5, 9, 13),
`Set3` = c(1, 2, 8, 9),
`Set4` = c(6, 7, 10, 12))
ggvenn(a, c("Set1", "Set2"))
可以看到ggvenn软件包很轻松的为我们进行了数据统计及可视化,但是如果需要输出数据之间共有与特有的清单该如何,请继续往下看
首先我们先对图形进行美化
ggvenn(a,c("Set 1","Set 2"),show_percentage = T,
stroke_color = "white",
fill_color = c("#E41A1C","#1E90FF","#FF8C00",
"#4DAF4A","#984EA3"),
set_name_color =c("#E41A1C","#1E90FF"))
- show_percentage 展示百分比
- stroke_color = "white" 设置线圈颜色
- fill_color 设置填充颜色
- set_name_color 设置集合名称颜色
经过上述操作可以看到set1与set2之间共有的数据有3个,那如何知道这三个数据所对应的内容,可以使用dplyr包连接数据框的方式进行输出,参考:
https://mp.weixin.qq.com/s/elSBJJUAhf1DNKPPKkSbSg
inner_join函数合并两个数据集的变量,保留共有的行
set1 <- a$Set1 %>% as.data.frame() %>% mutate(y1="A")
set2 <- a$Set2 %>% as.data.frame() %>% mutate(y2="B")
inner_join(set1,set2)
R中经常遇到的问题就是格式的转换,字符向量转化为数据框,定义因子等
也可以通过以下代码统计个数
inner_join(set1,set2) %>% summarise(count=n())
Joining, by = "."
count
1 3
反连接保留左侧数据中独有的行
anti_join(set1,set2) %>% summarise(count=n())
Joining, by = "."
count
1 2
anti_join(set2,set1) %>% summarise(count=n())
Joining, by = "."
count
1 1
可以看到分析过程还是很简单的,那是由于我们输入的数据很整洁,属于一个萝卜一个坑,但是如果我们的数据不整洁,一个框中有多个元素怎么办?
幸运的是tidyverse中有一系列函数可以让我们对数据进行切分、过滤、去重等,这些才是我们需要学习的重点,后面将会一一介绍
喜欢的小伙伴欢迎关注我的公众号R语言数据分析指南,持续分享更多优质资源