2016-12-15 27 views
1

Я пытаюсь сравнить, имеет ли поле какое-либо значение из списка целых чисел. (Пример: если MCC = 3001 || 3002 || 30004) в моделях SPSS. Но список возможных значений очень длинный. Может ли кто-нибудь сказать мне, как я могу передать ему список для сравнения одиночных значений без использования 'Or'/'||'.Сравнение нескольких элементов

+0

Возможно, вам лучше спросить об этом на [stats.se]. –

ответ

1

Это то, что вы ищете:

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

условие выполняется, если MCC содержит любое из значений, перечисленных после него.

1

Если значения просто непрерывный диапазон, то вы можете использовать RANGE:

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

Если есть небольшое число дискретных значений, которые должны быть исключения, то вы можете использовать комбинацию из RANGE и ANY, как так:

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

Если значения несколько более случайна и дискретно, то альтернативный способ достижения этой цели, должны иметь значение, сохраненное в качестве справочной таблицы, а затем совпадают по этим значениям.

Ниже я вручную вводим эти значения в набор данных, но, как правило, вы сохраняете их в текстовом/CSV или Excel-файле, а затем читаете в этом файле.

Это может быть хорошая технология управления данными, особенно если у вас есть много переменных, в которых у вас есть такие определения. Поскольку вы можете хранить отдельный файл, содержащий все эти значения, без необходимости жестко кодировать их в синтаксис, и эти файлы могут быть просто прочитаны программой и при необходимости обновляться.

(Хотя эта техника действительно требует SORT CASES, который может замедлить процесс, если обработка больших массивов данных. Таким образом, этот тип техники чаще используется в SQL. Вы можете использовать SPSSs 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. 
0

Вопрос был задан вопрос о Modeler, а не статистика.