【问题标题】:How can I get a vector of combinations in R?如何在 R 中获得组合向量?
【发布时间】:2021-03-17 16:10:51
【问题描述】:
我的数据集看起来像这样(在真实数据集中,它们就像 12 个观察值)
ID String
1 BDH
2 BDHV
3 PA
4 PmA
我想要所有组合,但考虑到 1,2 = 2,1
所以所需的数据集如下所示:
ID String
1 BDH
2 BDHV
3 PA
4 PmA
12 BDH;BDHV
123 BDH;BDHV;PA
1234 BDH;BDHV;PA;PmA
23 BDHV;PA
234 BDHV;PA;PmA
34 PA;PmA
如何使用 R 来做到这一点?
我想我必须使用 paste(, sep=";") 作为 String 变量,但仍然不知道如何进行组合。
【问题讨论】:
标签:
r
database
dplyr
combinations
【解决方案1】:
我们可以使用combn
out <- do.call(rbind, lapply(df1$ID, function(i)
data.frame(ID = combn(df1$ID, i, function(x) paste(x, collapse="")),
String = combn(df1$String, i, function(x) paste(x, collapse=";")))))
-输出
out
# ID String
#1 1 BDH
#2 2 BDHV
#3 3 PA
#4 4 PmA
#5 12 BDH;BDHV
#6 13 BDH;PA
#7 14 BDH;PmA
#8 23 BDHV;PA
#9 24 BDHV;PmA
#10 34 PA;PmA
#11 123 BDH;BDHV;PA
#12 124 BDH;BDHV;PmA
#13 134 BDH;PA;PmA
#14 234 BDHV;PA;PmA
#15 1234 BDH;BDHV;PA;PmA