Stata:将多个变量合并为一个

时间:2015-08-13 18:01:38

标签: variables stack combinations stata

我在Stata遇到了问题。我想要做的是将多个变量合并为一个。我的数据如下(简化):

ID a b c
1  x . .
2  y . .
3  . z .
4  . w .
5  . . u

现在我想要生成一个新变量d,其中包含变量abc的所有值,这样d就不会丢失值:

ID a b c d
1  x . . x
2  y . . y
3  . z . z
4  . w . w
5  . . u u

我尝试使用命令stack a b c, into(d),但随后Stata向我发出警告,数据将丢失,我的数据剩余部分只是堆叠变量而没有其他内容。是否有其他方法可以在不重命名变量abc的情况下执行此操作?

我的数据集包含大约90个这些变量,我想将它们组合成一个变量,所以可能有一种有效的方法。

2 个答案:

答案 0 :(得分:2)

您可以循环变量,将新变量替换为其他变量的非缺失值。这假设您的变量是字符串。尼克的解决方案更适合数值变量。

clear
input ID str5(a b c)
1  x "" ""
2  y "" ""
3  "" z ""
4  "" w ""
5  "" "" u
end
gen d=""
foreach v of varlist a-c {
 replace d=`v' if mi(d)
}
li

答案 1 :(得分:2)

在您的示例中,这意味着数字变量,并且每次观察中最多只有一个变量不丢失,egen的{​​{1}}函数就是您所需要的。

rowmax()