比较多个项目

时间:2016-12-15 04:48:25

标签: comparison spss spss-modeler

我试图比较一个字段在整数列表中是否有任何值。(例如:如果MCC = 3001 || 3002 || 30004)在SPSS建模器中。但是可能的值列表很长。任何人都可以告诉我如何将列表传递给它来比较单个值而不使用'或'/'||'。

5 个答案:

答案 0 :(得分:2)

有人询问有关Modeler的问题,而不是统计数据。

答案 1 :(得分:1)

这就是你要找的东西:

If any(MCC, 3001, 3002, value3, value4, value5 ....) 

如果MCC包含其后列出的任何值,则符合条件。

答案 2 :(得分:1)

如果值只是一个连续范围,那么您可以使用RANGE

COMPUTE MCC_List=RANGE(MCC, 3001, 3004)=1.

如果需要排除少量离散值,那么您可以使用RANGEANY的组合,如下所示:

COMPUTE MCC_List=RANGE(MCC, 3001, 3004)=1 and ANY(MCC,3003,3005)=0.

如果您的值稍微更随机且离散,那么实现此目的的另一种方法是将值存储为查找表,然后匹配这些值。

下面我在数据集中手动输入这些值,但通常您会将它们保存在text / csv或Excel文件中,然后您将读入该文件。

这可能是一种很好的数据管理技术,特别是如果您有许多变量可以导出这样的定义。因为您可以存储包含所有这些值的单独文件,而无需将它们硬编码到语法中,并且可以通过程序简单地读取这些文件并在需要时进行更新。

(虽然这种技术确实需要SORT CASES,这可能会在处理大型数据集时减慢进程。因此,这种类型的技术在SQL中更常用。您可以使用SPSS STAR JOIN需要一个SORT,但我自己并不是那个命令的忠实粉丝。)

这是一个快速演示:

DATA LIST LIST /ID MCC.
BEGIN DATA
1 4
2 5
3 1
4 6
5 7
END DATA.
DATASET NAME DS1.
SORT CASES BY MCC.

DATA LIST LIST /MCC_LIST MCC.
BEGIN DATA
1 1
1 2
1 3
1 4
1 5
END DATA.
DATASET NAME DS2.
SORT CASES BY MCC.

DATASET ACTIVATE DS1.
MATCH FILES FILE=* /TABLE=DS2 /BY MCC.
EXE.

答案 3 :(得分:1)

在SPSS Modeler中,您可以在Excel文件或文本文件中使用所有值(例如:如果MCC = 3001 || 3002 || 30004)。

稍后,使用合并节点检查值是否在数据中(使用关键变量MCC来比较两个数据集)。

答案 4 :(得分:0)

建模器CLEM表达式为: 成员(@FIELD,[int1 int2 int3])

分别带有字符串: 成员(@FIELD,['str1''str2''str3'])

有关更多功能和相关知识,请参见: https://www.ibm.com/support/knowledgecenter/en/SS3RA7_15.0.0/com.ibm.spss.modeler.help/clem_function_ref_comparison.htm