2013-02-12 2 views
1

У меня есть, на что я надеюсь, простой вопрос SPSS. Если я буду проводить слияние таблиц с использованием синтаксиса ниже, но как «bigfile», так и «smallfile» имеют значения для некоторой переменной [say, ChildID], будет ли «mergefile» иметь значения для ChildID из smallfile или из файла bigfile?Слияние SPSS-таблицы с дополнительной переменной, присутствующей в обоих наборах данных: какое значение сохраняется?

Match files files=bigfile 
/table=smallfile 
/by JoinID. 
dataset name mergefile. 
execute. 

спасибо. Дан

ответ

1

Из тонкой инструкции:

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

Таким образом, это следует указать, что ChildID должны быть ценности, которые были в bigfile, для конкретного примера. Давайте продемонстрируем это, чтобы убедиться.

data list free /JoinID ChildID X. 
begin data 
1 1 4 
1 1 5 
1 1 6 
1 1 7 
2 2 8 
2 2 9 
3 3 2 
3 3 1 
end data. 
dataset name bigfile. 

data list free /JoinID ChildID Y. 
begin data 
1 5 4 
2 5 8 
3 5 2 
end data. 
dataset name smallfile. 


match files file = 'bigfile' 
/table = 'smallfile' 
/by JoinID. 
dataset name mergefile. 
list ALL. 

Который производит выход.

JoinID ChildID XY

1.00  1.00  4.00  4.00 
1.00  1.00  5.00  4.00 
1.00  1.00  6.00  4.00 
1.00  1.00  7.00  4.00 
2.00  2.00  8.00  8.00 
2.00  2.00  9.00  8.00 
3.00  3.00  2.00  2.00 
3.00  3.00  1.00  2.00 

Вы также можете быть заинтересованы в подкомандой rename (а также drop и keep) для соответствия файлов (для предотвращения чрезмерной письменной форме или указать, какие файл, из которого вы хотите получить конечные переменные). Мой рабочий процесс обычно удаляет файлы из одного из файлов, поскольку файлы не будут сливаться, если они представляют собой строки разной длины.


Ниже приведен пример использования подменю переименования и удаления (с использованием тех же данных примера сверху). Это позволит вам сохранить значения из последующих файлов, если это то, что вы предпочитаете.

match files file = 'bigfile' 
/rename = (ChildId = Old) 
/table = 'smallfile' 
/by JoinID 
/drop Old. 
dataset name mergefile2. 
list ALL. 
+0

спасибо. Я сделал тест с фиктивной базой данных, и значение из BigFile сохраняется **, даже когда это «значение» является пустым **, но есть данные в smallfile. Столбец в Smallfile с дублированным заголовком (в данном случае, ChildID) просто игнорируется в слиянии. – user1991019

+0

Просьба оставить комментарий к моему ответу, в этом случае вы хотите использовать команду drop после того, как вы перечислите файл bigfile в команде файлов сопоставлений. Затем конечные данные в переменной «ChildID» будут поступать из файла smallfile. –

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