重新编码在 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 查找值和值标签之间的关联。