a*****b 发帖数: 2789 | 1 1。我已经生成了xx.1000, xx.1234, xx.1357,xx.1948, xx.1738 等100个sas data。
怎么用loop或者marco把他们stack到一起?他们格式,变量名都相同。总之,除了数据
数量,其他都相同。我开始想把xx后面的数字提出来变成数字(在文件名中好像数字是
字符吧),然后从1000循环到2000,每次循环时又把数字变成字符.反正空文件stack了
不影响的吧。如果想法幼稚,请别拍,谢谢。
2.现有100个xml data文件(大于10MB每个),格式相同,可以使用同一个map文件。怎
样把它们读到一个sas文件里面?分开读是没有问题的,但写100个输入太痛苦,而且后
面处理太麻烦。
之前遇到同样问题,不过是读1000多个txt data,当时用filevar搞定了。今天尝试了
改程序读xml,失败。
第一个问题奉送包子1个,第二个问题包子2个。如果嫌少,可以商量,谢谢。 |
s**********0 发帖数: 41 | 2 1.
%macro stack();
%do i=1000 %to 2000;
proc append base=xx.all data=xx.&i force;
%end;
%mend stack;
2.
Write a macro to read 100 xml files into 100 SAS datasets. Then use the
macro in 1 to stack SAS datasets. |
G**S 发帖数: 1108 | 3 2. Use Pipe to get all xml names into a sas dataset then use macro do loop;
filename YYY pipe "dir/b ""x:\xxxx\xx\*.xml""";
【在 s**********0 的大作中提到】 : 1. : %macro stack(); : %do i=1000 %to 2000; : proc append base=xx.all data=xx.&i force; : %end; : %mend stack; : 2. : Write a macro to read 100 xml files into 100 SAS datasets. Then use the : macro in 1 to stack SAS datasets.
|
a*****b 发帖数: 2789 | 4 大牛们,今天要下班了,没时间验证,明天尝试一下。有问题的地方还请帮忙作答。谢
谢。包子随后送上。 |
p********a 发帖数: 5352 | 5 纯数字怎么能做DATASET名字?
你的想法我感觉不行。应为SAS不能操作不存在的DATASET。中间会出错停止。
%macro a;
data all;
set %do i=1 %to 2000;%if %sysfunc(exist(a&i)) %then a&i; %end;;
run;
%mend;
%a;
【在 a*****b 的大作中提到】 : 1。我已经生成了xx.1000, xx.1234, xx.1357,xx.1948, xx.1738 等100个sas data。 : 怎么用loop或者marco把他们stack到一起?他们格式,变量名都相同。总之,除了数据 : 数量,其他都相同。我开始想把xx后面的数字提出来变成数字(在文件名中好像数字是 : 字符吧),然后从1000循环到2000,每次循环时又把数字变成字符.反正空文件stack了 : 不影响的吧。如果想法幼稚,请别拍,谢谢。 : 2.现有100个xml data文件(大于10MB每个),格式相同,可以使用同一个map文件。怎 : 样把它们读到一个sas文件里面?分开读是没有问题的,但写100个输入太痛苦,而且后 : 面处理太麻烦。 : 之前遇到同样问题,不过是读1000多个txt data,当时用filevar搞定了。今天尝试了 : 改程序读xml,失败。
|
a*****b 发帖数: 2789 | 6 经验证,改进后的该程序可以运行,送包子一枚,望笑纳
【在 s**********0 的大作中提到】 : 1. : %macro stack(); : %do i=1000 %to 2000; : proc append base=xx.all data=xx.&i force; : %end; : %mend stack; : 2. : Write a macro to read 100 xml files into 100 SAS datasets. Then use the : macro in 1 to stack SAS datasets.
|
a*****b 发帖数: 2789 | 7
对,sas会报错,但不会停止。最多就是空集stack到一起,不影响结果。
不过你的补充也很好,包子一枚。
【在 p********a 的大作中提到】 : 纯数字怎么能做DATASET名字? : 你的想法我感觉不行。应为SAS不能操作不存在的DATASET。中间会出错停止。 : %macro a; : data all; : set %do i=1 %to 2000;%if %sysfunc(exist(a&i)) %then a&i; %end;; : run; : %mend; : %a;
|