Я пытаюсь сравнить, имеет ли поле какое-либо значение из списка целых чисел. (Пример: если MCC = 3001 || 3002 || 30004) в моделях SPSS. Но список возможных значений очень длинный. Может ли кто-нибудь сказать мне, как я могу передать ему список для сравнения одиночных значений без использования 'Or'/'||'.Сравнение нескольких элементов
ответ
Это то, что вы ищете:
If any(MCC, 3001, 3002, value3, value4, value5 ....)
условие выполняется, если MCC содержит любое из значений, перечисленных после него.
Если значения просто непрерывный диапазон, то вы можете использовать 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.
Вопрос был задан вопрос о Modeler, а не статистика.
Возможно, вам лучше спросить об этом на [stats.se]. –