我试图找出哪种方法是交叉比较43个变量(数据集,数据)的最佳方法
我需要将变量1与variable 2,3,4,5,6,7....43
进行比较,然后将变量2与variable 1,3,4,5,6,7....43
进行比较,依此类推,变量号为。 43.
我想我应该使用某种循环,但我无法如何有效地执行此操作。
我想我只需要某种伪代码。无论哪种方式,我想在Stata的do文件中执行此操作。
答案 0 :(得分:2)
假设,例如变量var1-var43
和"比较"第一个和第二个之间的区别与第二个和第一个之间的不同,这是你的问题所暗示的,那么
forval i = 1/43 {
forval j = 1/43 {
if `i' != `j' {
<code for comparison between var`i' and var`j'>
}
}
}
使用其他变量名称,foreach
可能会更好。
答案 1 :(得分:0)
正如@NickCox建议的那样,你可以使用O(NxN)嵌套循环。如果这需要太长时间,如果你的“43”实际上是1000,那么就有更好的方法。对每个列表(间接)进行排序,即O(N logN),并运行合并顺序循环,即O(N),因此总共为O(N logN)。