網(wǎng)上繪制venn圖的案例有太多了,從傳統(tǒng)的venn圖到venn點(diǎn)圖;說白了就是找數(shù)據(jù)之間的相同與不同,下面通過一個(gè)小例子來說明
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軟件包很輕松的為我們進(jìn)行了數(shù)據(jù)統(tǒng)計(jì)及可視化,但是如果需要輸出數(shù)據(jù)之間共有與特有的清單該如何,請繼續(xù)往下看
首先我們先對圖形進(jìn)行美化
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" 設(shè)置線圈顏色
- fill_color 設(shè)置填充顏色
- set_name_color 設(shè)置集合名稱顏色
經(jīng)過上述操作可以看到set1與set2之間共有的數(shù)據(jù)有3個(gè),那如何知道這三個(gè)數(shù)據(jù)所對應(yīng)的內(nèi)容,可以使用dplyr包連接數(shù)據(jù)框的方式進(jìn)行輸出,參考:
https://mp.weixin.qq.com/s/elSBJJUAhf1DNKPPKkSbSg
inner_join函數(shù)合并兩個(gè)數(shù)據(jù)集的變量,保留共有的行
set1 <- a$Set1 %>% as.data.frame() %>% mutate(y1="A")
set2 <- a$Set2 %>% as.data.frame() %>% mutate(y2="B")
inner_join(set1,set2)
R中經(jīng)常遇到的問題就是格式的轉(zhuǎn)換,字符向量轉(zhuǎn)化為數(shù)據(jù)框,定義因子等
也可以通過以下代碼統(tǒng)計(jì)個(gè)數(shù)
inner_join(set1,set2) %>% summarise(count=n())
Joining, by = "."
count
1 3
反連接保留左側(cè)數(shù)據(jù)中獨(dú)有的行
anti_join(set1,set2) %>% summarise(count=n())
Joining, by = "."
count
1 2
anti_join(set2,set1) %>% summarise(count=n())
Joining, by = "."
count
1 1
可以看到分析過程還是很簡單的,那是由于我們輸入的數(shù)據(jù)很整潔,屬于一個(gè)蘿卜一個(gè)坑,但是如果我們的數(shù)據(jù)不整潔,一個(gè)框中有多個(gè)元素怎么辦?
幸運(yùn)的是tidyverse中有一系列函數(shù)可以讓我們對數(shù)據(jù)進(jìn)行切分、過濾、去重等,這些才是我們需要學(xué)習(xí)的重點(diǎn),后面將會一一介紹
喜歡的小伙伴歡迎關(guān)注我的公眾號R語言數(shù)據(jù)分析指南,持續(xù)分享更多優(yōu)質(zhì)資源