如果至少组合了 5 个 ID,则根据变量 ID 组合观察

Combine observations based on the variable ID if at least 5 IDs are combined

上周我发布了以下 。这个想法是做一个循环,通过随机组合基于变量 "id" 的观察来确定数据库的内容。

例如:

我得到了一个完美的问题答案:

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)给出有偏差的结果。

通过这个link,可以找到数据集的样本和完整的代码来重现这个例子。请注意,运行 整个代码可能需要一段时间,除非有明确说明我只对至少 5 个 ID 的组合感兴趣。

您可以在 5:

开始循环
for(i in 5:max(o$id)){
  combis=combn(unique(o$id),i)
   ...

这样,每个组合中至少有 5 个元素(参见 ?combn)。