2013-06-18 61 views
1

我有一個包含45個變量列表的列的數據集 - 它被稱爲「輸出」。 在另一個數據集中,我有200個變量的時間序列數據。第一行最上面的變量的名稱和整個時間的值都在列中。因此,舉例來說,我就失業問題在變量的名稱和失業率的價值之下進行分析。與GDP相同 - 此數據集稱爲「全部」。僅保留變量名稱單獨列表中指定的變量

我喜歡從數據集「out」中調用45個cariables,並使用只有45個變量的「All」構建一個小表。我使用proc sql; create table TABLE,但我不知道如何完成代碼。我的想法是定義一個列表,並將該列表引入proc sql以製作較小的表格,但是我無法使其工作。

我很感激能否有人幫助。 謝謝,SE

回答

3

這裏有一個PROC SQL解決方案是非常簡單

proc sql noprint; 
select col_name into :vars separated by ' ,' 
from output; 
quit; 

proc sql; 
create table want as select &vars. 
from all; 
quit; 
1

您可以使用PROC轉在你的第二個數據集,因爲你沒有提供太多的數據我可以給你如何使用語句一個簡單的例子,請參閱本documentation進一步的信息。

proc transpose data=work.narrow_file1 
out=work.narrow_file1_transp_prefix 
prefix=pet_count; 
run; 
2

一種選擇是將變量列表連接成一個宏變量,並使用它來保持你想要的。這就是我的「M思考:

data output; 
    Input VariableName $; 
    datalines; 
    One 
    Two 
    Three 
Run; 

data a; *_NULL_; 
    Retain VariableList; 
    Length VariableList $1000; 
    Set Output end=end; 
    VariableList = Catx(" ", VariableList, VariableName) ; 
    If End Then Call Symput('MyVariableList', VariableList); 
run; 

%put &MyVariableList; 

data Want; 
    Set All; 
    Keep &MyVariableList ; 
run;