SAS:(6)資料集的合併:SET、MERGE、UPDATE敘述句

SET 敘述句

用途

  • 將資料集A的部份資料,複製到新的資料集B。
  • 以資料集A的資料產生新變數到新的資料集B。
  • 將數個資料集縱向連結至一個新的資料集。

syntax

1.將資料集A的部份資料,複製到新的資料集B

1.1.將現存的資料集全部複製

data newname;
set oldname;

1.2.複製現存資料集的部份變數

data newname;
set oldname;
keep (drop) 變數名;

1.3.複製現存資料集中,符合特定條件部份觀察值

data newname;
set oldname;
if … then delete;

2.以資料集A的資料產生新變數到新的資料集B

data newname;
set oldname;
new_var_name=經過運算元處理的舊變數;

3.將數個資料集縱向連結至一個新的資料集。

data newname;
set oldname1 oldname2 oldname3 oldname4;

MERGE 敘述句

增加觀察值的變數

用途

  • 一對一合併:資料集A的第一筆對資料集B的第一筆…資料集A的第n筆資料對資料集B的第n筆資料
  • Matching 合併:當觀察值不完全一致時,必須先用proc sort先對選定的變數進行排序,再使用MERGE敘述句。

syntax

1.一對一合併

data newdataset;
merge olddataset1 olddataset2 … olddataset[n];

2.Matching 合併

proc sort data=olddataset1;
by var1;
proc sort data=olddataset2;
by var1;


data newdataset;
merge olddataset1 olddataset2;
by var1;

UPDATE 敘述句

用途

除了覆寫重複的觀察值與變數之外,也能額外新增觀察值與變數,是很實用的合併敘述句,跟Mathching合併一樣,也需要事先proc sort。

syntax

proc sort data=olddataset1;
by var1;
proc sort data=olddataset2;
by var1;


data newdataset;
update olddataset1 olddataset2;
by var1;

注意事項

在每一個data set之中的觀察值不可以有重複,否則會出現錯誤訊息

BY敘述句

用途

用來控制資料集的分組狀況,同樣也能在PROC STEP作用

syntax

by [descending] var1;

descending這個選項是將變數由大至小排列,如果沒宣告,則是由小至大排列

其他可能與SET、MERGE、UPDATE搭配使用的指令

DROP=var1、keep=var2

範例:

data new (DROP=var1);
set old;

範例:

data new;
set old (DROP=var1);

Firstobs=n

範例:

PROC PRINT DATA=old (FIRSTOBS=10)

OBS=n

範例:

PROC PRINT DATA=old (OBS=10)

RENAME=(oldname=newname)

範例:

data new (RENAME=(x1=name x2=age));

下一堂課:變數的次數分配表與列聯表:PROC FREQ敘述句的介紹

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License