1

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

list DE15_WHY if DE15_WHY != ""

这会显示DE15_WHY所有主题,即使他们没有任何内容DE15_WHY...

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

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

4

2 回答 2

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 中数值变量(或数值标量或矩阵元素)的默认值或系统缺失值,但它对字符串没有任何特殊含义"."

于 2013-10-29T18:09:25.357 回答
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
于 2013-10-29T15:13:27.010 回答