使用forvalues循环,我正在合并一个包含400个单独数据集的列表。
这些数据集可以是10个不同的值(由数据集中的变量定义)中的一个:根据数据集的不同,我会使用不同的数据集merge。例如,如果播放器90是类型9,我可能希望与Type_9.dta合并,而不是与Type_8或Type_7合并。
我想要的是这样的:
forvalues x = 1/400 {
use "player_`x'.dta"
* some way to turn the value of player type into a local macro l *
merge 1:1 using "type_`l'.dta"
}如何将变量类型放入宏中,该宏通过循环改变每种类型的类型?
发布于 2013-06-26 01:32:09
我不太清楚你的数据结构和最终目标,所以可能有更有效的方法来做到这一点。
如果player_type在每个player_*数据集中没有变化,您可以使用levelsof。这样做的特点是,如果player_type由于某种原因(如数据输入错误)而发生变化,则循环将出错。
forvalues x = 1/400 {
use "player_`x'.dta"
levelsof player_type, local(l)
merge 1:1 **some_id_var** using "type_`l'.dta"
}https://stackoverflow.com/questions/17303228
复制相似问题