首页 > 解决方案 > R- 子集或打印 5x14 数据帧中所有可能的列对

问题描述

我有一个包含 14 列和 5 行(没有标题和行名)的 R 数据框,我想提取所有可能的列对,如果可能的话是唯一的。

例如,我的输入数据框:

    C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 C11 C12 C13 C14
A   1   1   1   0   1   0   1   0   0   1   0   1   0   0
B   0   1   0   0   1   0   0   1   1   0   1   1   0   0
C   1   0   1   1   1   0   0   0   0   1   1   1   1   1
D   1   1   1   1   1   1   1   0   0   0   1   1   0   0
E   1   0   0   1   0   1   1   1   0   1   1   1   1   1

我想获得所有可能的 91 对独特的配对,例如:

    C1  C2
A   1   1
B   0   1
C   1   0
D   1   1
E   1   0
    C1  C3
A   1   1
B   0   0
C   1   1
D   1   1
E   1   0

依此类推,如果可能的话,在不同的数据帧中

谢谢!

标签: rdataframemultiple-columnspairwise

解决方案


我们可以combn用来做成对组合

out <- combn(df1, 2, simplify = FALSE)

-输出

> length(out)
[1] 91
> out[[1]]
  C1 C2
A  1  1
B  0  1
C  1  0
D  1  1
E  1  0

数据

df1 <- structure(list(C1 = c(1L, 0L, 1L, 1L, 1L), C2 = c(1L, 1L, 0L, 
1L, 0L), C3 = c(1L, 0L, 1L, 1L, 0L), C4 = c(0L, 0L, 1L, 1L, 1L
), C5 = c(1L, 1L, 1L, 1L, 0L), C6 = c(0L, 0L, 0L, 1L, 1L), C7 = c(1L, 
0L, 0L, 1L, 1L), C8 = c(0L, 1L, 0L, 0L, 1L), C9 = c(0L, 1L, 0L, 
0L, 0L), C10 = c(1L, 0L, 1L, 0L, 1L), C11 = c(0L, 1L, 1L, 1L, 
1L), C12 = c(1L, 1L, 1L, 1L, 1L), C13 = c(0L, 0L, 1L, 0L, 1L), 
    C14 = c(0L, 0L, 1L, 0L, 1L)), class = "data.frame", row.names = c("A", 
"B", "C", "D", "E"))

推荐阅读