Список не пропущенных строковых переменных в 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