Список не пропущенных строковых переменных в Stata

Хочу отобразить (list) значение строковой переменной DE15_WHY в Stata только тогда, когда он не отсутствует (например, некоторые предметы не предоставили комментарии). Я думал, что это будет легко

list DE15_WHY if DE15_WHY != ""

Это отображает DE15_WHY для всех предметов, даже если они не имеют ничего в DE15_WHY...

Строка отформатирована неправильно? Например, считает ли Stata, что все субъекты имеют достоверное наблюдение для DE15_WHY? Как это исправить? Я проверил, и он отформатирован как строковая переменная.

Stata также позволяет мне tabulate DE15_WHY, аналогично R. Это отличный вариант, но он не отображает все содержимое строковой переменной в таблице. Как получить Stata для отображения всей строки?

2 ответа

Решение

Ответ @Metrics содержит несколько хороших деталей, но я добавлю здесь больше.

В случае строковых переменных в Stata отсутствует только одно определение, а именно, что строка пуста и точно не содержит символов.

Одно или несколько мест, несмотря на то, что они обычно ничего не сообщают людям, не считаются пропущенными в том, что касается Stata.

Термин "пустой", возможно, здесь неясен, и поэтому его лучше избегать.

Если пробелы каким-то образом попадают в ваши строковые переменные, возникает условие

   if trim(mystring) == "" 

выбирает значения, которые являются пустыми или имеют пробелы, и соответственно условие, такое как

   if trim(mystring) != "" 

выбирает значения с другим контентом. Таким образом, чтобы заменить пробелы пустыми строками,

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

В общем, если у вас довольно длинные строки, у Stata обязательно есть проблема, где их отобразить. Один совет в том, что list покажет больше, чем tabulate, Если вы хотите tabulate а также list гибрид, проверить groups из SSC, используя ssc inst groups,

Хотя период . это стандартное или системное пропущенное значение для числовых переменных (или числовых скаляров или матричных элементов) в Stata, оно не придает особого значения строке ".",

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
Другие вопросы по тегам