2016-09-14 65 views
0

我正在使用Stata,并且我有一组变量,分别命名为cal1,cal2,cal3依此类推,直到cal21。对于我的数据集的每一行,我可以有或多或少cal*变量作为非丢失(我设计了一个reshape wide数据集)。我想要生成一个新变量,该变量返回每个非缺失行可用的变量cal*的最大名称。例如,如果第1行直到cal3为不丢失,则此变量返回cal3;对于行2如果我有cal1,cal2cal6,我想cal6。有没有办法做到这一点?利用Stata中变量的名称

+0

在Stata中不这样做 –

+3

最直接的方法是在重塑之前计算它。然后,不要重新塑形,因为有经验的Stata用户普遍认为,除少数例外情况外,Stata使用更长的布局来完成复杂的分析,甚至是简单的任务,比如尝试的简单任务而不是相同数据的广泛布局。 – 2016-09-15 02:11:34

+2

@Noobie如果你给出了一个理由,那么这个评论可能会有帮助或有趣。 –

回答

1

这将是更容易使用数据来完成长格式布局,但它是可行的具有广泛的数据也有一个循环:

gen max_cal = "none" 
forvalues v=1/21 { 
    replace max_cal = "cal`v'" if !missing(cal`v') 
} 

这将有一个更高的max_cal变量每次更新一个不失踪。

+0

“格式”在Stata中过载(显然不是你的错!)。经验丰富的Stata用户会立即认识到您在谈论的内容,但我喜欢Clyde Schechter提到的长布局和宽布局的例子。 –

+0

只需注意,如果变量名称不规则,我们只会使用'foreach'。 –

+0

@NickCox一个很好的观点。我认为这样的单词列表会成为一个很好的FAQ。 –