我想在Stata中显示(list
)字符串变量DE15_WHY
的值,只有当它没有丢失时(例如某些主题没有提供注释)。我觉得这很容易:
list DE15_WHY if DE15_WHY != ""
即使DE15_WHY
中没有任何内容,也显示DE15_WHY
所有主题...
字符串格式错误吗?例如,Stata是否认为所有受试者都对DE15_WHY
有有效观察?我该如何解决?我检查过,它被格式化为字符串变量。
Stata还允许我tabulate DE15_WHY
,类似于R.这是一个很好的选择,但不会在表格中显示字符串变量的全部内容。如何让Stata显示整个字符串?
答案 0 :(得分:3)
@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中数值变量(或数字标量或矩阵元素)的默认值或系统缺失值,但它不会为字符串"."
附加任何特殊含义。
答案 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