以所有可能的方式比较 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)。
我正在尝试找出哪种方法是交叉比较 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)。