2016-02-17 4 views
-1

У меня возникли трудности при решении следующей проблемы.Посмотрите значение в разных строках

Мой набор данных выглядит следующим образом:

ID Personal number Place of birth Mother in house Personal number mother v6 
2   1   FL     1      2 
2   3   NY     0      0 
2   4   FL     0      2 
2   2   CA     0      0 
4 
4 

То, что я хотел бы создать является синтаксис, который говорит, что если «Матери в доме» = 1, посмотреть на «Персональный номер матери» с совпадающими ID номер и дайте мне страну рождения матери в v6. enter image description here

+0

Несчастливо, пример изображения несколько отличается от ваш пример таблицы. Просто для того, чтобы прояснить это. Ожидаемый результат для v6 - «CA» в первой строке и sysmis в других строках, правильно? – mirirai

ответ

0

В основном это можно сделать, создав таблицу поиска с «ID» «Персональный номер» и «Место рождения». На втором этапе вы сопоставляете данные поиска с данными матерей.

Следующий код будет делать это (Вы должны настроить имена переменных, конечно):

DATASET NAME orig. 

*** Create lookuptable with "ID" and "Personal Number" as unique matching key 
*** and "Place of Birth" as matching value. 
* (Every combination of "ID" and "Personal Number" have to be unique in 
* the original data set in order to make this procedure work properly) 
DATASET COPY lookup. 
DATASET ACTIVATE lookup. 

* Just keep the variables "ID", "Personal Number" and "Place Of birth" in the lookup table. 
MATCH FILES 
/FILE * 
/KEEP ID PersNr PlaceOfBirth. 

* Sort data set according to matching key. 
SORT CASES BY ID PersNr. 

*** Match lookup table with original table. 
*** Use "ID" and "Personal Number Mother" as matching key. 
DATASET ACTIVATE orig. 

* Sort data set according to matching key. 
SORT CASES BY ID PersNrOfMother. 

* Match persNrOfMother with data from the lookup table. 
MATCH FILES 
/FILE * 
/TABLE lookup 
    /RENAME (PersNr = PersNrOfMother) (PlaceOfBirth = PlaceOfBirthMother) 
/BY ID PersNrOfMother. 

* Delete PlaceOfBirthMother value if mother is not in house. 
IF (MotherInHouse=0) PlaceOfBirthMother = "". 
EXECUTE. 

Имейте в виду, что это изменит случай порядок ваших данных, так как вы должны прибегать данные для процедура сопоставления. Если вы хотите восстановить первоначальный заказ, вам сначала нужно создать переменную, которая хранит исходный порядок (например, с помощью команды COMPUTER casenumber = $casenum.), а затем использовать эту переменную для использования в конце SORT CASES BY casenumber.

+0

Я предполагаю, что может быть и способ выполнить задание с помощью команды «STAR JOIN», которая, вероятно, не потребует много времени для использования данных. Однако я не знаком с этой командой. – mirirai

Смежные вопросы