将数据帧转换为维恩图 table

convert dataframe to venn diagram table

所以,我编写了一个函数,它接受 dataframeunique number <1, 5> 假设在这种情况下我们希望唯一数字为 3

   how_much = 100
   A <- sample(how_much, replace = TRUE, x = 1:5) 
   B <- sample(how_much, replace = TRUE, x = 1:5)    
   VennData <- data.frame(A, B)

然后 return 描述 table 如下:

count    A      B
 24     TRUE   TRUE
 20     TRUE   FALSE
 13     FALSE  TRUE
 43     FALSE  FALSE

当我们可以看到我们有 24 个观察值,其中 A 和 B 都等于 3, 20 个观测值 A 等于 3,B 不等于 3, 13 个观测值 A 不等于 3,B 等于 3 等等...

set.seed(43)

library(dplyr)
VennData %>%
    mutate(A = (A == 3),
           B = (B == 3)) %>%
    count(A, B)
## A tibble: 4 x 3
#  A     B         n
#  <lgl> <lgl> <int>
#1 FALSE FALSE    64
#2 FALSE TRUE     20
#3 TRUE  FALSE    13
#4 TRUE  TRUE      3

在基础 R 中,

aggregate(Count ~ ., transform(VennData, A = A == 3, B = B == 3, Count = 1), sum)
#      A     B Count
#1 FALSE FALSE    64
#2  TRUE FALSE    13
#3 FALSE  TRUE    20
#4  TRUE  TRUE     3

选项data.table

library(data.table)
set.seed(43)
setDT(VennData)[, .N, .(A = A == 3, B = B == 3)]
#     A     B  N
#1: FALSE FALSE 64
#2: FALSE  TRUE 20
#3:  TRUE  TRUE  3
#4:  TRUE FALSE 13