0

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

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

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

4

1 回答 1

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" 
}
于 2013-06-25T17:32:08.647 回答