重新编码在 Stata 中用字符串编码的缺失值
Recode missing values coded with a string in Stata
我有一个缺失值编码为 "missing" 的数据集。我如何重新编码这些以便 Stata 将它们识别为缺失值?当我有数字缺失值时,我一直在使用例如:
mvdecode _all, mv(99=. )
但是,当我 运行 里面有一个字符时,例如:
mvdecode _all, mv("missing"=. )
我收到错误 missing is not a valid numlist
。
mvdecode
适用于 numlists,不适用于字符串(在 help mvdecode
中明确说明)。 Stata 中字符串的缺失值由 ""
.
表示
clear
set more off
*----- example dataset -----
sysuse auto
keep make mpg
keep in 1/5
replace make = "missing" in 2
list
*----- what you want -----
ds, has(type string)
foreach var in `r(varlist)' {
replace `var' = "" if `var' == "missing"
}
list
list if missing(make)
您可以使用 missing()
函数验证 Stata 现在是否识别字符串变量的一个缺失值。
mvdecode
仅适用于数字变量 :帮助中的横幅是 "Change numeric values to missing values"(强调已添加)。所以错误消息应该是有道理的:字符串 "missing"
肯定不是数值,所以 Stata 会在那里阻止你。按照您的要求,对 Stata 说数值 "missing"
应该更改为系统缺失是没有意义的。
至于你应该做什么,这取决于你在 Stata 术语中的意思 coded "missing"
。
如果您指的是具有文字值 "missing"
的字符串变量,它应该被空字符串 ""
替换,那么这将是一个遍历所有字符串变量的循环:
ds, has(type string)
quietly foreach v in `r(varlist)' {
replace `v' = "" if `v' == "missing"
}
如果您指的是具有值标签 "missing"
的数值变量,那么您需要找出相应的数值并在对 mvdecode
的调用中使用它。使用 label list
查找值和值标签之间的关联。
我有一个缺失值编码为 "missing" 的数据集。我如何重新编码这些以便 Stata 将它们识别为缺失值?当我有数字缺失值时,我一直在使用例如:
mvdecode _all, mv(99=. )
但是,当我 运行 里面有一个字符时,例如:
mvdecode _all, mv("missing"=. )
我收到错误 missing is not a valid numlist
。
mvdecode
适用于 numlists,不适用于字符串(在 help mvdecode
中明确说明)。 Stata 中字符串的缺失值由 ""
.
clear
set more off
*----- example dataset -----
sysuse auto
keep make mpg
keep in 1/5
replace make = "missing" in 2
list
*----- what you want -----
ds, has(type string)
foreach var in `r(varlist)' {
replace `var' = "" if `var' == "missing"
}
list
list if missing(make)
您可以使用 missing()
函数验证 Stata 现在是否识别字符串变量的一个缺失值。
mvdecode
仅适用于数字变量 :帮助中的横幅是 "Change numeric values to missing values"(强调已添加)。所以错误消息应该是有道理的:字符串 "missing"
肯定不是数值,所以 Stata 会在那里阻止你。按照您的要求,对 Stata 说数值 "missing"
应该更改为系统缺失是没有意义的。
至于你应该做什么,这取决于你在 Stata 术语中的意思 coded "missing"
。
如果您指的是具有文字值 "missing"
的字符串变量,它应该被空字符串 ""
替换,那么这将是一个遍历所有字符串变量的循环:
ds, has(type string)
quietly foreach v in `r(varlist)' {
replace `v' = "" if `v' == "missing"
}
如果您指的是具有值标签 "missing"
的数值变量,那么您需要找出相应的数值并在对 mvdecode
的调用中使用它。使用 label list
查找值和值标签之间的关联。