S*******1 发帖数: 251 | 1 现在有两个Variable Name 相同的两个DATA FILE。 不同的是两个数据的取样年代不一
样。 现在我想新产生一个数据把两个数据文件相减,得出每个Variable 两年的差值。
由于有超过1000个VARIABLES, 感觉应该有简便方法。 现向大家请教。谢谢。 | m***w 发帖数: 69 | 2 /* Generate the two SAS data sets */
data temp1;
input ID x y;
datalines;
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
;
run;
data temp2;
input ID x y;
datalines;
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
;
run;
/* Define the list of the variables */
%let var = x y;
%macro test();
/* Generate the variable for the SQL */
%let n = %sysfunc(countw(&var));
%let v = %scan(&var, 1, ' ');
%let qv = a.&v - b.&v as &v;
%do i = 2 %to &n;
%let v = %scan(&var, &i, ' ');
%let qv = &qv, a.&v - b.&v as &v;
%end;
%put the variable list is &qv;
/* Run PROC SQL */
proc sql;
create table test as
select &qv
from temp1 a left join temp2 b
on a.ID=b.ID;
quit;
%mend;
%test;
【在 S*******1 的大作中提到】 : 现在有两个Variable Name 相同的两个DATA FILE。 不同的是两个数据的取样年代不一 : 样。 现在我想新产生一个数据把两个数据文件相减,得出每个Variable 两年的差值。 : 由于有超过1000个VARIABLES, 感觉应该有简便方法。 现向大家请教。谢谢。
| S*******1 发帖数: 251 | 3 谢谢,好像我看懂了。
【在 m***w 的大作中提到】 : /* Generate the two SAS data sets */ : data temp1; : input ID x y; : datalines; : 1 1 2 : 2 2 3 : 3 3 4 : 4 4 5 : 5 5 6 : 6 6 7
|
|