如何在多个二进制列中获得最常见的组合

时间:2019-04-05 10:03:07

标签: r dplyr frequency

这是一个矩阵100 * 54,其中包含100条记录和53个二进制变量以及一个因变量-Y / N

部分独立数据如下:

enter image description here

dependent == Y

时,我设法找到了最常见的变量
aa <- NULL
for (i in 1 : ncol(data1)) {
  aa[i] <- length(which(data1[which(data1$Output == 'Y'), i] !=0))
}

现在,我想找到构成dependent == Y的变量的最常见组合,组合中元素的数量无关紧要。

例如,当dependent == Y时,

      Combination              Count
      V1 = 1 & V2 = 1           30
      V1 = 1 & V2 = 1 & V3= 1   25
      V4 = 1 & V5 = 1           24
      ...

1 个答案:

答案 0 :(得分:0)

我们可以粘贴所有列,然后计数:

# example data
set.seed(1); m1 <- matrix(sample(c(0, 1), 1000, replace = TRUE), ncol = 4)

# all freqs
sort(table(apply(m1, 1, paste, collapse = "")))
# 1100 1111 1101 1001 0100 0101 0000 0001 0010 0011 0110 1110 0111 1011 1000 1010 
#    8    8   12   13   14   14   16   16   16   16   16   16   18   18   22   27 

如果我们假设1st col是我们的“是/否”列:

# 0 = No freqs
sort(table(apply(m1[ m1[,1] == 0, -1], 1, paste, collapse = "")))
# 100 101 000 001 010 011 110 111 
#  14  14  16  16  16  16  16  18

# 1 = Yes freqs
sort(table(apply(m1[ m1[,1] == 1, -1], 1, paste, collapse = "")))
# 100 111 101 001 110 011 000 010 
#   8   8  12  13  16  18  22  27