以所有可能的方式比较 43 个变量

Compare 43 variables in all possible ways

我正在尝试找出哪种方法是交叉比较 43 个变量(数据集、数据)的最佳方法

我需要将变量 1 与 variable 2,3,4,5,6,7....43 进行比较,然后将变量 2 与 variable 1,3,4,5,6,7....43 进行比较,依此类推,直到变量号。 43.

我想我应该使用某种循环,但我不知道如何有效地执行此操作。

我想我只需要某种伪代码。无论哪种方式,我都想在 Stata 的 do-file 中执行此操作。

假设例如变量 var1-var43 并且第一个和第二个之间的 "comparison" 与第二个和第一个之间的不同,这就是您的问题所暗示的,然后

forval i = 1/43 { 
    forval j = 1/43 { 
        if `i' != `j' { 
              <code for comparison between var`i' and var`j'> 
        } 
    }
}

使用其他变量名,foreach 可能更好。

正如@NickCox 所建议的,您可以使用 O(NxN) 嵌套循环。如果这花费的时间太长,如果您的“43”实际上是 1000,则可以,那么有更好的方法。对每个列表(间接)进行排序,复杂度为 O(N logN),运行 一个合并顺序循环,复杂度为 O(N),因此总共为 O(N logN)。