我想删除数据集中所有观测值相同(-94
)的变量。
我的方法如下:
local abc *all variables of the dataset*
tostring `abc', replace force
foreach var of local abc {
replace `abc' = "" if `abc' == "-94"
}
但是,我收到类型不匹配错误,无法继续执行dropmiss
命令。
我的数据集具有1900
个变量,但只有106
个观测值。变量都是字符串和数字,因此我必须在开始时运行tostring
命令。
数据示例(仅包含要掺杂的变量):
clear
input str7(ELi014c ELi014d) long(ELi012a ELi012b ELi012c ELi012d) str7 ELi008a
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
"-94" "-94" -94 -94 -94 -94 "-94"
end
答案 0 :(得分:1)
考虑以下玩具示例:
SupportsGet=true
然后您可以找到感兴趣的变量,如下所示:
clear
set obs 10
generate v1 = -94 // numeric
forvalues i = 2 / 4 {
generate v`i' = rnormal() // numeric
}
generate v5 = "-94" // string
list
+-----------------------------------------------+
| v1 v2 v3 v4 v5 |
|-----------------------------------------------|
1. | -94 .1810702 .1617331 -.0910539 -94 |
2. | -94 -2.472578 .884746 -.5641506 -94 |
3. | -94 -1.259646 -.9369262 .0942772 -94 |
4. | -94 .2986405 .2054719 -1.25441 -94 |
5. | -94 .4703567 1.868845 .0574179 -94 |
|-----------------------------------------------|
6. | -94 -.5504516 .3403896 -1.720799 -94 |
7. | -94 -1.504979 .0951505 -.4002379 -94 |
8. | -94 -.6522541 1.021817 -2.524902 -94 |
9. | -94 .9978508 -1.4657 -.5643548 -94 |
10. | -94 .2728079 -.177151 1.16664 -94 |
+-----------------------------------------------+
这是另一种无需大规模转换变量类型或外部命令的方法:
destring *, replace
ds
foreach var in `r(varlist)' {
quietly summarize `var'
if `r(min)' == `r(max)' drop `var'
}
list
+-----------------------------------+
| v2 v3 v4 |
|-----------------------------------|
1. | .1810702 .1617331 -.0910539 |
2. | -2.472578 .884746 -.5641506 |
3. | -1.259646 -.9369262 .0942772 |
4. | .2986405 .2054719 -1.25441 |
5. | .4703567 1.868845 .0574179 |
|-----------------------------------|
6. | -.5504516 .3403896 -1.720799 |
7. | -1.504979 .0951505 -.4002379 |
8. | -.6522541 1.021817 -2.524902 |
9. | .9978508 -1.4657 -.5643548 |
10. | .2728079 -.177151 1.16664 |
+-----------------------------------+
答案 1 :(得分:1)
该示例足以说明 Stata Journal 中findname
的用法。无需将所有数据转换为字符串,也无需进行任何此类质量转换。
clear
input str7(ELi014c ELi014d) long(ELi012a ELi012b) foo
"-94" "-94" -94 -94 1
"-94" "-94" -94 -94 2
"-94" "-94" -94 -94 3
"-94" "-94" -94 -94 4
"-94" "-94" -94 -94 5
end
findname, all(@ == -94) local(bad1)
findname, all(@ == "-94") local(bad2)
drop `bad1' `bad2'
list
+-----+
| foo |
|-----|
1. | 1 |
2. | 2 |
3. | 3 |
4. | 4 |
5. | 5 |
|-----|