字符串表达式中缺少值

  • 如果函数 LPADRPAD 的数字自变量 (可以是表达式) 不合法或缺失,那么结果为空字符串。 如果填充或删除是唯一的操作,那么将用空格填充字符串的整个长度。 如果操作是嵌套的,那么会将空字符串传递到下一个嵌套级别。
  • 如果 SUBSTR 的数字自变量不合法或缺失,那么结果为空字符串。 如果 SUBSTR 是唯一的操作,那么字符串为空白。 如果操作是嵌套的,那么会将空字符串传递到下一个嵌套级别。
  • 如果 INDEXRINDEX 的数字自变量不合法或缺失,那么结果为系统缺失。

通过统计和图表过程以及缺失值函数将字符串用户缺失值视为缺失值。 它们在其他变换表达式中被视为有效。

DATA LIST LIST /stringvar (a1) numvar(f5.2).
BEGIN DATA
"a" 1
"b" 2
"c" 99
END DATA.
MISSING VALUES stringvar ('c') numvar (99).
COMPUTE newnum1=numvar.
STRING newstring (a1).
COMPUTE newstring=stringvar.
DO IF numvar <> 1.
  COMPUTE num_eval=1.
END IF.
DO IF stringvar <> "a".
  COMPUTE string_eval=1.
END IF.
COMPUTE num_missing=missing(numvar).
COMPUTE string_missing=missing(stringvar).
LIST.

stringvar numvar  newnum1 newstring num_eval string_eval num_missing string_missing 
 
a           1.00     1.00 a              .          .           .00          .00 
b           2.00     2.00 b             1.00       1.00         .00          .00 
c          99.00      .   c              .         1.00        1.00         1.00
  • 对于 stringvar , "c" 的值已声明为 user-missing。
  • 字符串变量的所有三个值都被视为有效的 in COMPUTE newstring=stringvar
  • 对于 "c" 值, DO IF stringvar <> "a" 求值为 true ,而不是缺失值。 这将返回变量 string_eval 的值 1 ,而不是系统缺失值。
  • MISSING 函数将 "c" 识别为缺失。 这将返回变量 string_missing 的值 1。