上周我发布了以下问题。这个想法是创建一个循环,通过基于变量“id”随机组合观察来确定数据库的内容。
例如:
- 数据集 1:id 1、2、3、4、5、6、7、8...的组合
- 数据集 2:id 1、2、3 的组合
- 数据集 3:id 2、3、4、5 的组合
- 数据集 4:id 5、6、7、8、9、10 的组合...
我得到了这个问题的完美答案:
for(i in 2:max(o$id)){
combis=combn(unique(o$id),i)
for(j in 1:ncol(combis)){
sub=o[o$id %in% combis[,j],]
out=sub[1,] # use your function
out$label=paste(combis[,j],collapse ='') #provide an id so you know for which combination this result is
result=rbind(result,out) # paste it to previous output
}
}
但是,我现在的问题如下:有没有办法指定我只想要至少 5 个 id 的组合?这个过程占用了大量的计算时间,我注意到小数据集(少于 5 个不同的 id)给出了有偏差的结果。
通过这个链接,可以找到数据集的样本和完整的代码来重现该示例。请注意,运行整个代码可能需要一段时间,除非有指定的内容我只对至少 5 个 id 的组合感兴趣。