在循环中包含一个变量局部宏

时间:2013-06-25 16:57:15

标签: for-loop stata local stata-macros

使用forvalues循环,我正在合并一个包含400个单独数据集的列表。

这些数据集可以是10个不同值之一(由数据集中的变量定义):根据数据集,我会merge使用不同的数据集。例如,如果播放器90是类型9,我希望与Type_9.dta而不是Type_8Type_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"
}

如何将变量类型转换为通过循环为每种类型更改的宏?

1 个答案:

答案 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" 
}