【问题标题】:Calculate combinations and use those as argument in cut计算组合并将其用作 cut 中的参数
【发布时间】:2018-01-25 13:23:28
【问题描述】:

我希望有人能够帮助我解决这个问题。目前,我正在尝试使用多个 if 语句对数据集进行分箱的所有可能组合。例如,我将尝试将数据从 -Inf 到 i、i 到 j、j 到 Inf。然后我有以下代码:

for (i in 1:10) {
  for (j in 1:10) {
    if(i/10 == j/10) next
    data$variable1_optim <- cut(data$variable1,breaks = c(-Inf, i/10, j/10, Inf))
    best_result[i,j] <- bin_power2(data$variable1_optim)
    if (min(tabulate(data$variable1_optim)) / NROW(data$variable1_optim) <= 0.05)
      best_result[i,j] <- NA
    if (length(unique(data$variable1_optim)) < 3)
      best_result[i,j] <- NA
  }
}

目前这段代码的问题是 [i = 0.1 , j = 0.2] 的组合产生与 [i=0.2 , j=0.1] 相同的结果。因此,我想以某种方式生成所有可能的组合,并将它们输入到我的循环中。不幸的是,我不知道如何做到这一点,谷歌搜索我的答案也没有成功。

【问题讨论】:

  • 请提供一个小的示例数据集以供使用,并显示您想要的输出。请使用dput(...)
  • 你考虑过使用for(i in 1:9)for(j in (i+1):10)吗?
  • @CPak 我已经解决了,谢谢:)。
  • @Freguglia 仍然会给出太多的组合,但使用 t(combn(c())) 可以解决问题 :) 感谢您的帮助~

标签: r combinations


【解决方案1】:

耶!经过更多的旧论坛帖子的挖掘,我终于找到了它!对于任何想知道的人,这就是我解决它的方法:

combin <- t(combn(c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0), 2))
best_result <- NA
for (i in 1:nrow(combin)) {
  data$variable1_optim <- cut(data$variable1,breaks = c(-Inf, combin[i,1], combin[i,2], Inf))
  best_result[i] <- bin_power2(data$variable1_optim)
  if (min(tabulate(data$variable1_optim)) / NROW(data$variable1_optim) <= 0.05)
    best_result[i] <- NA
  if (length(unique(data$variable1_optim)) < 3)
    best_result[i] <- NA

}

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多