概觀 (MATCH FILES 指令)

MATCH FILES 結合 2 到 50 IBM® SPSS® Statistics 資料檔中的變數。 MATCH FILES 可以在不同檔案之間進行平行或非平行比對,或執行表格查閱。 平行比對 依觀察值順序結合檔案 (有時稱為 循序比對)。 非平行比對 會根據一或多個索引鍵變數的值來結合檔案。 在表格查閱中, MATCH FILES 會在一個檔案中查閱變數,並將這些變數傳送至觀察值檔案。

MATCH FILES 上指定的檔案可以是 IBM SPSS Statistics 資料檔或現行階段作業中開啟的資料集。 合併檔案會變成新的作用中資料集。

一般而言, MATCH FILES 是用來結合包含相同觀察值但不同變數的檔案。 若要結合包含相同變數但不同觀察值的檔案,請使用 ADD FILES。 若要更新現有的 IBM SPSS Statistics 資料檔,請使用 UPDATE

選項

變數選擇。 您可以使用 DROPKEEP 次指令,指定將每個輸入檔中的哪些變數併入新的作用中資料集。

變數名稱。 在使用 RENAME 次指令結合檔案之前,您可以先重新命名每一個輸入檔中的變數。 這可讓您結合相同但其名稱在不同輸入檔中不同的變數,或分隔不同但具有相同名稱的變數。

變數旗標。 您可以使用 IN來建立變數,以指出觀察值是否來自特定輸入檔。 您可以使用 FIRSTLAST 次指令來建立變數,以標示具有相同索引鍵變數值的一組觀察值的第一個或最後一個觀察值。

變數對映。 您可以使用 MAP 次指令來要求一個對映,以顯示新作用中資料集中的所有變數、其順序,以及它們來自的輸入檔。

基本規格

基本規格是兩個以上 FILE 次指令,每個次指令指定要符合的檔案。 此外,還需要 BY 才能指定非平行相符項的索引鍵變數。 BYTABLE 都需要符合表格查閱檔案。

  • 除非指定 DROPKEEP ,否則所有輸入檔中的所有變數都會併入新的作用中資料集。

次指令順序

  • RENAMEIN 必須緊接在它們所套用的 FILETABLE 次指令之後。
  • 任何 BYFIRSTLASTKEEPDROPMAP 次指令都必須在所有 TABLEFILERENAMEIN 次指令之後。

語法規則

  • RENAME 可以在每個 FILETABLE 次指令之後重複,並且僅套用至緊接在 FILETABLE上指定之檔案中的變數。
  • IN 只能用於非平行比對或表格查閱。 (因此,只有在指定 BY 時,才能使用 IN 。)
  • BY 只能指定一次。 不過,在 BY上可以指定多個變數。 當使用 BY 時,所有檔案都必須以 BY上所指名之索引鍵變數的遞增順序排序。
  • MAP 可以根據需要經常重複。

作業

  • MATCH FILES 會讀取 FILETABLE 上指定的所有檔案,並建置新的作用中資料集。
    • 如果包含現行作用中資料集並以星號 (FILE=*) 指定,則新的合併資料集會取代作用中資料集。 如果該資料集是具名資料集,則合併的資料集會保留該名稱。 如果目前作用中資料集未包含或由名稱指定 (例如, FILE=Dataset1) ,則會建立新的未命名合併資料集,並變成作用中資料集。 如需命名資料集的相關資訊,請參閱 DATASET NAME
  • 新的作用中資料集包含來自輸入檔的完整字典資訊,包括變數名稱、標籤、列印及寫入格式,以及遺漏值指示器。 新檔案也包含來自每一個輸入檔的文件。 如需刪除文件的相關資訊,請參閱 DROP DOCUMENTS
  • 依序從指定的第一個檔案複製變數,然後從指定的第二個檔案複製變數,依此類推。
  • 如果在多個輸入檔中使用相同的變數名稱,則會先從指定的檔案取得資料。 字典資訊取自第一個包含數值標籤、遺漏值或一般變數之變數標籤的檔案。 如果第一個檔案沒有這類資訊, MATCH FILES 會檢查第二個檔案,依此類推,尋找字典資訊。
  • 所有輸入檔中的所有觀察值都包含在合併檔案中。 如果觀察值不在其中一個輸入檔中,則會為該檔案唯一的變數指派系統遺漏值。
  • BY 指定應根據一或多個主要變數上的共同值來結合觀察值。 所有輸入檔必須以索引鍵變數的遞增順序排序。
  • 如果未使用 BY ,則程式會執行平行 (循序) 比對,結合每一個檔案中的第一個觀察值,然後結合每一個檔案中的第二個觀察值,依此類推,而不考慮可能存在的任何識別值。
  • 如果將作用中資料集命名為輸入檔,則在符合檔案之前,會將任何已指定的 NSAMPLE 指令套用至該檔案。
  • 保留 FILTER 指令所定義的過濾條件。 合併檔案中包含已過濾的觀察值。 如果您要排除觀察值,請在執行 MATCH FILES之前使用 SELECT IF 指令來指定選取準則。

限制

  • 在一個 MATCH FILES 指令上最多可以結合 50 個檔案。
  • 最多一個 BY 次指令。 不過, BY 可以指定多個變數。
  • 如果使用作用中資料集作為輸入檔,則 TEMPORARY 指令無法生效。

範例

範例

MATCH FILES FILE='/data/part1.sav' 
  /FILE='/data/part2.sav' 
  /FILE=*.
  • MATCH FILES 會以平行方式結合三個檔案 (作用中資料集及兩個外部 IBM SPSS Statistics 資料檔)。 根據觀察值在每一個檔案中的順序來結合觀察值。
  • 新作用中資料集包含的觀察值數目與三個輸入檔中最大的相同。

範例

GET FILE='/examples/data/mydata.sav'.
SORT CASES BY ID.
DATASET NAME mydata.
GET DATA /TYPE=XLS 
  /FILE='/examples/data/excelfile.xls'.
SORT CASES BY ID.
DATASET NAME excelfile.
GET DATA /TYPE=ODBC /CONNECT=
 'DSN=MS Access Database;DBQ=/examples/data/dm_demo.mdb;'+
 'DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
 /SQL='SELECT * FROM main'.
SORT CASES BY ID.
MATCH FILES
 /FILE='mydata'
 /FILE='excelfile'
 /FILE=*
 /BY ID.
  • IBM SPSS Statistics 格式的資料檔,並指派資料集名稱 mydata。 由於已指派資料集名稱,因此即使在開啟其他資料來源之後,它仍可供後續使用。
  • 然後讀取 Excel 檔案並指派資料集名稱 excelfile。 如同 IBM SPSS Statistics 資料檔,由於已指派資料集名稱,因此在開啟其他資料來源之後仍然可用。
  • 然後讀取資料庫中的表格。 因為它是最近開啟或啟動的資料集,所以它是作用中資料集。
  • 然後,這三個資料集與 MATCH FILES 指令合併在一起,使用 FILE 次指令上的資料集名稱而非檔名。
  • 星號 (*) 用來指定作用中資料集,在此範例中是資料庫表格。
  • 這些檔案會根據 BY 次指令上指定的索引鍵變數 ID值合併在一起。
  • 由於所有要合併的檔案都需要以索引鍵變數的相同順序排序,因此會在每個資料集上執行 SORT CASES