Stata - 如何查找哪些列具有每行的非空条目

时间:2014-07-16 22:09:55

标签: row stata

在Stata中,我有一个这样的数据集:

obs    v2    v3    v4    v5    v6
1      .     3     .     .     1
2      2     .     .     4     5
3      .     7     .     .     .
4      1     .     1     .     4

如何查找具有非“。”的所有列。它们的价值,按行?

例如,我想找到:

obs 1包含v3v6的非空值。

obs 2包含v2v5v6的非空值。

obs 3具有v3的非空值。

obs 4包含v2v4v6的非空值。

这是一种完全没有效率的伪方式(我希望找到一种更好,更快的方式):

  1. 创建新变量v2a ... v6a。如果行中存在非空值,则v2a将采用字符串值"v2",否则为0。为所有'a'变量执行此操作。
  2. 连接所有a变量。
  3. 我本身不需要新的变量。如果它只是输出到屏幕上,那也很棒。

1 个答案:

答案 0 :(得分:2)

这段代码不是很优雅,但它可以胜任。

clear
input obs v2 v3 v4 v5 v6
1 . 3 . . 1
2 2 . . 4 5
3 . 7 . . .
4 1 . 1 . 4
end

gen strL nonmiss=""
foreach var of varlist v2-v6    {
    replace nonmiss=nonmiss+" "+"`var'" if !missing(`var')
}
list nonmiss