Merge 仅保留在单独的变量名列表中指定的变量

Merge 仅保留在单独的变量名列表中指定的变量,merge,dataset,sas,proc-sql,Merge,Dataset,Sas,Proc Sql,我有一个数据集,其中有一列包含45个变量的列表,称为输出。 在另一个数据集中,我有200个变量的时间序列数据。第一行顶部的变量名称和整个时间内的值都在列中。举个例子,我把失业率放在变量名的顶部,失业率的值在变量名下。GDP等数据也一样——该数据集称为All 我喜欢从数据集中调用45个cariables,并用这45个变量制作一个更小的表 我使用procsql;创建表,但我不确定如何完成代码。我的想法是定义一个列表,并将该列表引入procsql以生成较小的表,但是我无法让它工作 如果有人能帮上忙,我

我有一个数据集,其中有一列包含45个变量的列表,称为输出。 在另一个数据集中,我有200个变量的时间序列数据。第一行顶部的变量名称和整个时间内的值都在列中。举个例子,我把失业率放在变量名的顶部,失业率的值在变量名下。GDP等数据也一样——该数据集称为All

我喜欢从数据集中调用45个cariables,并用这45个变量制作一个更小的表

我使用procsql;创建表,但我不确定如何完成代码。我的想法是定义一个列表,并将该列表引入procsql以生成较小的表,但是我无法让它工作

如果有人能帮上忙,我将不胜感激。
谢谢,SE

您可以在第二个数据集中使用proc transpose,因为您没有提供太多的数据,我可以提供一个简单的示例来说明如何使用该语句,请参考此获取更多信息

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

您可以在第二个数据集中使用proc transpose,因为您没有提供太多的数据。我可以提供一个简单的示例,说明如何使用该语句,请参阅此示例以了解更多信息

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

一种选择是将一系列变量连接到一个宏变量中,并使用它来保留所需的内容。以下是我的想法:

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;

一种选择是将一系列变量连接到一个宏变量中,并使用它来保留所需的内容。以下是我的想法:

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;

这里有一个非常简单的procsql解决方案

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

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

这里有一个非常简单的procsql解决方案

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

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