Sas 保留宏创建的变量
我有以下代码,其中我重命名列名;我只想保留宏创建的变量。我确实意识到我可以删除旧的变量,但我很好奇是否有一个保留选项可以放在宏中 例如,在datastep中,我只想保留以“%transform_this(JUNE19)”开头的变量 谢谢Sas 保留宏创建的变量,sas,Sas,我有以下代码,其中我重命名列名;我只想保留宏创建的变量。我确实意识到我可以删除旧的变量,但我很好奇是否有一个保留选项可以放在宏中 例如,在datastep中,我只想保留以“%transform_this(JUNE19)”开头的变量 谢谢 %macro transform_this(x); &x._Actual=input(Current_Month, 9.0); &x._Actual_Per_Unit = input(B, 9.); &x._Budget=inpu
%macro transform_this(x);
&x._Actual=input(Current_Month, 9.0);
&x._Actual_Per_Unit = input(B, 9.);
&x._Budget=input(C, 9.);
&x._Budget_Per_Unit=input(D, 9.);
&x._Variance=input(E, 9.);
&x._Prior_Year_Act=input(G, 9.);
Account_Number=input(H, 9.);
Account_Description=put(I, 35.);
&x._YTD_Actual=input(Year_to_Date, 9.);
&x._YTD_Actual_Per_Unit=input(L, 9.);
%mend transform_this;
data June_53410_v1;
set June_53410;
%transform_this(JUNE19);
if Account_Description='Account Description' then DELETE;
Drop Current_Month B C D E G H I Year_to_Date L M N;
run;
这使得所有变量都从June19和Account开始,这是您需要的变量
这使得所有变量都从June19和Account开始,这是您需要的变量
我很好奇是否有一个保留选项,我可以放在宏内
您完全可以在宏中使用keep
:
%macro transform_this(x);
keep &x._Actual &x._Actual_Per_Unit
&x._Budget &x._Budget_Per_Unit
&x._Variance &x._Prior_Year_Act
Account_Number Account_Description
&x._YTD_Actual &x._YTD_Actual_Per_Unit
;
&x._Actual=input(Current_Month, 9.0);
/* ...and the rest of your code */
%mend transform_this;
你有什么理由认为你不能
我很好奇是否有一个保留选项,我可以放在宏内
您完全可以在宏中使用keep
:
%macro transform_this(x);
keep &x._Actual &x._Actual_Per_Unit
&x._Budget &x._Budget_Per_Unit
&x._Variance &x._Prior_Year_Act
Account_Number Account_Description
&x._YTD_Actual &x._YTD_Actual_Per_Unit
;
&x._Actual=input(Current_Month, 9.0);
/* ...and the rest of your code */
%mend transform_this;
您认为不能执行的原因是什么?在数据步骤中添加两个sentinel变量,一个在宏调用之前,一个在宏调用之后。在
keep
语句中使用双破折号--
变量名列表构造,并在数据步骤输出数据集说明符drop=
选项中删除哨兵
data want (drop=sentinel1 sentinel2); /* remove sentinels */
set have;
retain sentinel1 0;
%myMacro (…)
retain sentinel2 0;
…
keep sentinel1--sentinel2; * keep all variables created by code between sentinel declarations;
run;
名称范围列表依赖于变量定义的顺序,如中所示
下表:
名称范围列表
变量列表
包含的变量x--a
按变量定义顺序排列的所有变量,从
变量x到变量a(含)x-数值-a
从变量x到变量a的所有数值变量x-字符-a
从变量x到变量a的所有字符变量
注意:注意,名称范围列表使用双连字符(--
)来指定
变量之间的范围和编号范围列表使用单个
连字符以指定范围
向数据步骤添加两个sentinel变量,一个在宏调用之前,一个在宏调用之后。在
keep
语句中使用双破折号--
变量名列表构造,并在数据步骤输出数据集说明符drop=
选项中删除哨兵
data want (drop=sentinel1 sentinel2); /* remove sentinels */
set have;
retain sentinel1 0;
%myMacro (…)
retain sentinel2 0;
…
keep sentinel1--sentinel2; * keep all variables created by code between sentinel declarations;
run;
名称范围列表依赖于变量定义的顺序,如中所示
下表:
名称范围列表
变量列表
包含的变量x--a
按变量定义顺序排列的所有变量,从
变量x到变量a(含)x-数值-a
从变量x到变量a的所有数值变量x-字符-a
从变量x到变量a的所有字符变量
注意:注意,名称范围列表使用双连字符(--
)来指定
变量之间的范围和编号范围列表使用单个
连字符以指定范围
当我看到这样一个过程时,我怀疑某个地方可能需要转置,所以完整的解决方案每个月都是动态的。当我看到这样一个过程时,我怀疑某个地方可能需要转置,所以完整的解决方案每个月都是动态的。这似乎是合法的,但我找不到官方参考中记录的地方。你有链接吗?这似乎是合法的,但我找不到官方参考文件中的记录。你有链接吗?