【问题标题】:How to get the most common combination within multiple binary columns如何在多个二进制列中获得最常见的组合
【发布时间】:2019-04-05 10:03:06
【问题描述】:

这是一个 100*54 的矩阵,有 100 条记录和 53 个二元变量和一个因变量 - Y/N

部分独立数据如下:

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
      ...

【问题讨论】:

  • 先验算法可能会让你感兴趣:medium.com/@dimuthcse/… 在 R 中,你使用 arules 包来实现算法
  • 不确定速度,但您可以运行dplyr::count()。例如df %&gt;% filter(dependent == 1) %&gt;% group_by_at(2:54) %&gt;% count() %&gt;% arrange(-n)

标签: r dplyr frequency


【解决方案1】:

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

# 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 

如果我们假设第一列是我们的是/否列:

# 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

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2015-01-16
    • 1970-01-01
    相关资源
    最近更新 更多