在Stata中,我有一个这样的数据集:
obs v2 v3 v4 v5 v6
1 . 3 . . 1
2 2 . . 4 5
3 . 7 . . .
4 1 . 1 . 4
如何查找具有非“。”的所有列。它们的价值,按行?
例如,我想找到:
obs 1
包含v3
和v6
的非空值。
obs 2
包含v2
,v5
和v6
的非空值。
obs 3
具有v3
的非空值。
obs 4
包含v2
,v4
和v6
的非空值。
这是一种完全没有效率的伪方式(我希望找到一种更好,更快的方式):
v2a
... v6a
。如果行中存在非空值,则v2a
将采用字符串值"v2"
,否则为0
。为所有'a'变量执行此操作。a
变量。我本身不需要新的变量。如果它只是输出到屏幕上,那也很棒。
答案 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