使用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"
}
如何将变量类型转换为通过循环为每种类型更改的宏?
答案 0 :(得分:1)
您的数据结构和最终目标对我来说并不十分清楚,因此可能有更有效的方法来实现这一目标。
如果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"
}