我有一个很大的数据集,里面有很多分类变量。
我为某些变量定义了值标签,但没有为其他变量定义
la de vlbl 1 "a" 2 "b" 3 "c"
la val vlbl vlbl
如何查找标记了哪些变量并将其移至数据集的末尾?
答案 0 :(得分:3)
考虑以下玩具示例:
clear
set obs 3
forvalues i = 1 / 10 {
generate var`i' = _n
}
label define var3label 1 "A" 2 "B" 3 "C"
label values var3 var3label
label define var5label 1 "D" 2 "E" 3 "F"
label values var5 var5label
label define var9label 1 "G" 2 "H" 3 "I"
label values var9 var9label
list
+----------------------------------------------------------------------+
| var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 |
|----------------------------------------------------------------------|
1. | 1 1 A 1 D 1 1 1 G 1 |
2. | 2 2 B 2 E 2 2 2 H 2 |
3. | 3 3 C 3 F 3 3 3 I 3 |
+----------------------------------------------------------------------+
您只需要使用has()
命令的ds
选项和order
:
ds, not(vallabel)
order `r(varlist)'
list
+----------------------------------------------------------------------+
| var1 var2 var4 var6 var7 var8 var10 var3 var5 var9 |
|----------------------------------------------------------------------|
1. | 1 1 1 1 1 1 1 A D G |
2. | 2 2 2 2 2 2 2 B E H |
3. | 3 3 3 3 3 3 3 C F I |
+----------------------------------------------------------------------+
您也可以使用has()
而不是not()
做相反的事情:
ds, has(vallabel)
order `r(varlist)'
list
+----------------------------------------------------------------------+
| var3 var5 var9 var1 var2 var4 var6 var7 var8 var10 |
|----------------------------------------------------------------------|
1. | A D G 1 1 1 1 1 1 1 |
2. | B E H 2 2 2 2 2 2 2 |
3. | C F I 3 3 3 3 3 3 3 |
+----------------------------------------------------------------------+