2013-01-18 29 views
1

我正在處理sas中的一個數據問題。 我有一個dateset包括1000個變量和1000個記錄爲每個變量。 而我有另一個變量列表,其中包含100個變量名稱。 我想在該數據集中的變量名稱與變量列表匹配時對第一個數據集進行子集化。我試過proc mergeproc sql,但不能解決。 任何人都可以幫我嗎?當數據集中的變量匹配變量列表時數據集的子集

非常感謝

+1

如果您希望某人編寫按預期工作的代碼,則應該描述表格的結構。示例數據將是完美的。 – vasja

回答

2

SAS保持或降低變量與方便名爲關鍵字「保持」和「下降」。如果您尚未擁有文本格式,PROC SQL可以幫助您生成列表。

data want; 
set have; 
keep var1 var2 var3 var4; 
run; 

如果你的數據集「vnames」與變量「隨時注意」變量列表,你可以這樣做:

proc sql; 
select tokeep into :keeplist separated by ' ' from vnames; 
quit; 

data want; 
set have; 
keep &keeplist.; 
run; 

PROC SQL正在採取「隨時注意」,而是內容將它們選擇到一個表格或屏幕上,將它們放在一個宏變量'keeplist'內的空格分隔的列表中,然後用作'keep'語句的參數。

+0

我試過你的代碼爲proc sql; 選擇保持:保留列表由''從列表中分隔; quit;但它不起作用。我不知道爲什麼 –

+1

既然你沒有解釋它是如何工作的,我不知道爲什麼:) – Joe

0

Here您可以找到如何輸出數據集的所有變量名稱列表作爲另一個數據集。這樣可以更容易地確定要使用哪些大數據集以及哪些不會使用(例如,變量名稱的左(或右)連接),然後查看行數至少是變量的計數想要有)。