
- SAS 教程
- SAS - 首頁
- SAS - 概述
- SAS - 環境
- SAS - 使用者介面
- SAS - 程式結構
- SAS - 基本語法
- SAS - 資料集
- SAS - 變數
- SAS - 字串
- SAS - 陣列
- SAS - 數值格式
- SAS - 運算子
- SAS - 迴圈
- SAS - 決策
- SAS - 函式
- SAS - 輸入方法
- SAS - 宏
- SAS - 日期和時間
- SAS 資料集操作
- SAS - 讀取原始資料
- SAS - 寫入資料集
- SAS - 合併資料集
- SAS - 合併資料集
- SAS - 資料集子集
- SAS - 資料集排序
- SAS - 資料集格式化
- SAS - SQL
- SAS - 輸出交付系統
- SAS - 模擬
- SAS 基本統計過程
- SAS - 算術平均值
- SAS - 標準差
- SAS - 頻數分佈
- SAS - 交叉表
- SAS - t 檢驗
- SAS - 相關分析
- SAS - 線性迴歸
- SAS - Bland-Altman 分析
- SAS - 卡方檢驗
- SAS - Fisher 精確檢驗
- SAS - 重複測量分析
- SAS - 單因素方差分析
- SAS - 假設檢驗
- SAS 有用資源
- SAS - 快速指南
- SAS - 有用資源
- SAS - 問答
- SAS - 討論
SAS - 合併資料集
多個 SAS 資料集可以基於特定的公共變數合併以生成單個數據集。這是使用 **MERGE** 語句和 **BY** 語句完成的。合併資料集中的觀測總數通常小於原始資料集中觀測總數的總和。這是因為當公共變數的值匹配時,來自兩個資料集的變數被合併為一個記錄。
下面給出合併資料集的兩個前提條件:
- 輸入資料集必須至少有一個公共變數才能合併。
- 輸入資料集必須按將用於合併的公共變數排序。
語法
SAS 中 MERGE 和 BY 語句的基本語法如下:
MERGE Data-Set 1 Data-Set 2 BY Common Variable
以下是所用引數的說明:
**資料集1,資料集2** 是一個接一個寫出的資料集名稱。
**公共變數** 是根據其匹配值將資料集合並的變數。
資料合併
讓我們透過一個例子來理解資料合併。
示例
考慮兩個 SAS 資料集,一個包含員工 ID、姓名和工資,另一個包含員工 ID 和部門。在這種情況下,為了獲取每個員工的完整資訊,我們可以合併這兩個資料集。最終的資料集每個員工仍然只有一條觀測值,但它將包含工資和部門變數。
# Data set 1 ID NAME SALARY 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 # Data set 2 ID DEPT 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN # Merged data set ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 Mike 611.5 IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 IT 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
上述結果是透過使用以下程式碼實現的,其中公共變數 (ID) 用於 BY 語句中。請注意,兩個資料集中的觀測值都已按 ID 列排序。
DATA SALARY; INPUT empid name $ salary ; DATALINES; 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 ; RUN; DATA DEPT; INPUT empid dEPT $ ; DATALINES; 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN ; RUN; DATA All_details; MERGE SALARY DEPT; BY (empid); RUN; PROC PRINT DATA = All_details; RUN;
匹配列中的缺失值
在某些情況下,公共變數的一些值在資料集之間可能不匹配。在這種情況下,資料集仍然會合並,但在結果中會給出缺失值。
示例
考慮工資資料集缺失員工 ID 3,部門資料集缺失員工 ID 6 的情況。應用上述程式碼後,我們得到以下結果。ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 . . IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 . 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
僅合併匹配項
為了避免結果中的缺失值,我們可以考慮只保留公共變數值匹配的觀測值。這是透過使用 **IN** 語句實現的。需要更改 SAS 程式的 merge 語句。
示例
在下面的示例中,**IN=** 值僅保留來自兩個資料集 **SALARY** 和 **DEPT** 的值匹配的觀測值。
DATA All_details; MERGE SALARY(IN = a) DEPT(IN = b); BY (empid); IF a = 1 and b = 1; RUN; PROC PRINT DATA = All_details; RUN;
執行上述包含更改部分的 SAS 程式後,我們將獲得以下輸出。
1 Rick 623.3 IT 2 Dan 515.2 OPS 4 Ryan 729.1 HR 5 Gary 843.25 FIN 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
廣告