假设以下结构中的数据框:
ColA ColB
A 1
A 2
A 4
B 3
B 2
B 4
C 1
C 1
C 1
是否可以选择总和为7的A,B和C的所有组合(使用A,B和C中的每一个),例如如下:
ColA Combination1 Combination2
A 2 4
B 4 2
C 1 1
或者,循环浏览A,B和B的所有独特组合会更好吗? C确定它们的总数然后列绑定它们?如果是这样,我将如何遍历A,B和B的独特组合。 C假设数据在第一个数据帧的结构中?
答案 0 :(得分:1)
这是我的建议:
df <- read.table( header =TRUE,
text = "ColA ColB
A 1
A 2
A 4
B 3
B 2
B 4
C 1
C 1
C 1")
X <- tapply(df$ColB, df$ColA, unique)
G <- expand.grid(X)
G <- G[rowSums(G)==7, ]
Combinations <- data.frame(t(G))
colnames(Combinations) <- paste0("Comb_", 1:ncol(Combinations))
列表X
包含A
,B
和C
的唯一值:
X
#$A
#[1] 1 2 4
#$B
#[1] 3 2 4
#$C
#[1] 1
然后expand.grid
构建笛卡尔积[{1}},即这些唯一值的组合:
G
在G
# A B C
#1 1 3 1
#2 2 3 1
#3 4 3 1
#4 1 2 1
#5 2 2 1
#6 4 2 1
#7 1 4 1
#8 2 4 1
#9 4 4 1
之后,只剩下总和为7的组合:
G <- G[rowSums(G)==7,]
最后,矩阵G
# A B C
#6 4 2 1
#8 2 4 1
中的数据会被放入data.frame G
中:
Combinations