使用SPSS语法检查值的存在

时间:2019-07-04 13:54:16

标签: spss

我应该根据某些条件检查值的存在。

即我有3个变量,varA,varB和varC。仅当varA> varB(条件)时,varC不应为空。

我通常使用某种语法来检查任何变量,并按其频率运行以查看是否有错误:

if missing(varC) and (varA>varB) ck_varC=1.
if not(missing(varC)) and not(varA>varB) ck_varC=2.
exe.
fre ck_varC.
exe.

当条件变得复杂并且在条件中缺少missing()或其他函数时,我遇到了一些错误,但是我可能会犯一个错误。

您是否认为有一种更简便的检查方法?

预先感谢

编辑:这是我的意思的一个示例,想想在一个带有某种路由的问卷中,您问任何人的年龄,如果他们在17到44岁之间,问他们是否工作,是否工作,问他们几个小时。 / p>

Example

我有一个excel工具,其中我放下了所有条件的所有变量,然后它将在示例中生成语法,所有变量的结构都相同,考虑到两种情况,我们都有一个不应为否则我们没有应该存在的值。

有更简单的方法吗?无论什么条件,这种结构始终有效吗?

1 个答案:

答案 0 :(得分:1)

在SPSS中,缺少的值不是数字。您还需要显式编程这些方案。您{部分覆盖了varC,但是没有覆盖varAvarB缺少数据的情况。

(作为一种好的做法,也许,您应该使用语法将检查变量初始化为sysmis或0):

numeric ck_varC (f1.0).
compute ck_varC=0.
if missing(varC) and (varA>varB) ck_varC=1.
if not(missing(varC)) and not(varA>varB) ck_varC=2.
***additional conditional scenarios go here:.
if missing(varA) or missing(varB) ck_varC=3.
...
fre ck_varC.

顺便说一句-如果要整体运行语法,则不需要任何exe.命令。

稍后编辑,在发布者更新问题之后:

您的语法将是这样。请注意,range函数的使用不是强制性的,但将来可能对您有用。 我还假设work是一个字符串变量,因此需要使用引号将其值引用。

if missing(age) ck_age=1.
if missing(work) and range(age,17,44) ck_work=1.
if missing(hours) and work="yes" ck_hours=1.
if not (missing (age)) and not(1>0) ck_age=2. /*this will never happen because of the not(1>0).
if not(missing(work)) and (not range(age,17,44)) ck_work=2. /*note that if age is missing, this ck_work won't be set here.
if not(missing(hours)) and (not(work="yes")) ck_hours=2.
EXECUTE.

字符串变量区分大小写 字符串中没有与missing等价的字符串;空的空白字符串(“”)仍然是字符串。当not(work="yes")为空白(“”)时,Truework