我有四个数据帧df1,df2,df3,df4 它们每个都有两列属性,可用 PROPERTIES包含各种属性的名称,AVAILABLE的值为0或1,表示属性是否存在。 所有数据帧都具有相同的属性名称集。我想要一个有4个圆圈的维恩图,各个交叉点代表共同的属性。如何完成这项工作。
答案 0 :(得分:0)
如果我理解正确,您的数据看起来像这样:
ll <- lapply(1:4, function(x) {
data.frame(PROPERTIES = letters[1:8],
AVAILABLE = as.logical(rbinom(8, 1, 0.5)),
ind = x)
})
请注意,我使用逻辑而不是二进制文件。
首先,让我们将数据重塑为更有用的东西。
library(dplyr)
library(tidyr)
dd <- bind_rows(ll) %>%
spread(ind, AVAILABLE)
这给了我们
> head(dd)
PROPERTIES 1 2 3 4
1 a TRUE FALSE TRUE TRUE
2 b TRUE FALSE FALSE TRUE
3 c FALSE FALSE FALSE FALSE
4 d TRUE TRUE TRUE FALSE
5 e TRUE TRUE FALSE FALSE
6 f TRUE FALSE TRUE TRUE
我们可以使用包eulerr
(我已经开发)来生成一个欧拉图。
library(eulerr)
fit <- euler(dd[, -1])
plot(fit)
结果可能如下所示: