[英]How do I add a variable to a dataset within a SET statement in a data step?
我有一个 SAS 数据步骤,它使用%do
循环来构建组合多个文件的 set 语句。 这些文件的名称格式为datafile2020q1
或datafile2021q3
,并且每个文件都存储在名称格式DataLibrary2020
或DataLibrary2021
的库中。
%macro processclaimsdata;
data rawclaimsdata (keep=&claimvariables.);
set
%do yr=2019 %to 2021;
%do qrtr=1 %to 4;
DataLibrary&yr..datafile&yr.q&qrtr. (keep=&claimvariables.)
%end;
%end;
;
run;
%mend;
我的目标是为每个数据集向其中包含YYYYqQ
的数据集添加一个变量,例如 2020q1 或 2021q3,这样我就可以跟踪它来自哪个文件。 这是否可以通过修改上面的代码来实现,或者我是否需要对其进行返工以使用proc append
和/或proc sql
?
使用indsname=
选项来跟踪一行来自的数据集。 虽然它不会采用您指定的格式,但这会告诉您一行来自的确切数据集名称。
下面的代码将在名为dsn
的数据集中创建一个新变量,该变量存储一行来自的数据集的名称。
data want;
set have1
have2
have3
indsname=dsn;
run;
然后,您可以使用substr()
或其他字符串函数从每个数据集名称中获取季度名称。 例如:
qtr = substr(dsn, -6);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.