在Stata中列出非缺失字符串变量

时间:2013-10-29 14:53:12

标签: string stata

我想在Stata中显示(list)字符串变量DE15_WHY的值,只有当它没有丢失时(例如某些主题没有提供注释)。我觉得这很容易:

list DE15_WHY if DE15_WHY != ""

即使DE15_WHY中没有任何内容,也显示DE15_WHY所有主题...

字符串格式错误吗?例如,Stata是否认为所有受试者都对DE15_WHY有有效观察?我该如何解决?我检查过,它被格式化为字符串变量。

Stata还允许我tabulate DE15_WHY,类似于R.这是一个很好的选择,但不会在表格中显示字符串变量的全部内容。如何让Stata显示整个字符串?

2 个答案:

答案 0 :(得分:3)

@Metrics的答案有几个很好的细节,但我会在这里添加更多。

对于字符串变量,Stata只有一个缺失定义,即字符串为空,并且不包含任何字符。

一个或多个空间,尽管通常不向人们传达任何东西,但就Stata而言,并不符合遗漏条件。

术语“空白”在这里可能不清楚,因此可以更好地避免。

如果空格以某种方式进入字符串变量,则为

等条件
   if trim(mystring) == "" 

选择空的或具有空格的值,并相应地选择

等条件
   if trim(mystring) != "" 

选择包含其他内容的值。要用空字符串替换空格,我们就这样去了

   replace mystring = "" if trim(mystring) == "" 

通常,如果您有相当长的字符串,Stata必然会有显示它们的位置的问题。一个提示是list将显示超过tabulate。如果您想要tabulatelist混合,请使用groups从SSC查看ssc inst groups

虽然句点.是Stata中数值变量(或数字标量或矩阵元素)的默认值或系统缺失值,但它不会为字符串"."附加任何特殊含义。

答案 1 :(得分:2)

sysuse auto
list  rep78 in 1/10 if  rep78 !=. # for non-missing 
tab  rep78  # default behaviour is to report only non-missing
tab rep78, missing # if you want also missing

如果变量是由.

指示缺失的字符串
list yourvariable if yourvariable !="."

如果变量是缺少空格

的字符串
list yourvariable if yourvariable !=""

示例:

my  my1
ab  1
cd  2
    3
ef  4

list  my if  my !=""

     +----+
     | my |
     |----|
  1. | ab |
  2. | cd |
  4. | ef |
     +----+

tab会将空白和。失踪。

 tab my

         my |      Freq.     Percent        Cum.
------------+-----------------------------------
         ab |          1       33.33       33.33
         cd |          1       33.33       66.67
         ef |          1       33.33      100.00
------------+-----------------------------------
      Total |          3      100.00


tab my,missing

         my |      Freq.     Percent        Cum.
------------+-----------------------------------
            |          1       25.00       25.00
         ab |          1       25.00       50.00
         cd |          1       25.00       75.00
         ef |          1       25.00      100.00
------------+-----------------------------------
      Total |          4      100.00