由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 怎样批量将很多的sas文件转换成stata文件?
相关主题
proc export to Excel: can not read it!a sas question (about macro)
[合集] 一个sas问题How to import several excel files together?
在线等:急问大牛帮我看看SAS macro里的问题Is the following SAS code wrong?
如何在matlab中直接call R呢?[求助]用SAS建立多个工作簿的Excel文件
How to work on this dataset?大家能否帮忙给我看看这道SAS题。谢谢
如何用代码将多个sas数据集输出成csv文件SAS proc format的问题
SAS: automatically generate xls file with updated date请教两个关于SAS的问题
可以用sas直接改excel的worksheet的名字么?Base sas/If else questions
相关话题的讨论汇总
话题: stata话题: convert话题: macro话题: xxx话题: name
进入Statistics版参与讨论
1 (共1页)
t********m
发帖数: 939
1
如果我在一个文件夹下面有很多的sas data set,现在我想将它们全部转换成stata
data set,怎样方便快捷呢?我能想到的是写一个macro,但是文件名还是得一个一个
输,请教各位大牛,有没有什么办法能自动get到所有文件,然后转换后的文件default
就用原来的文件名?谢谢!
%macro convert(name);
proc export data=lib.&name
outfile="D:\work\&name..dta"
dbms=stata replace;
run;
%mend convert;
%convert(name1);
%convert(name2);
%convert(name3);
......
P**********c
发帖数: 17
2
一种方法:
你的文件名没有规律
%macro convert (infilelist=);
%let i=1;
%let infile=%scan(&infilelist,&i);
%do %while ("&infile"~="");
proc export data=temp.&infile
outfile="c:\temp\&infile..dta"
dbms=stata replace;
run;
%let i=%eval(&i+1);
%let infile=%scan(&infilelist,&i);
%end;
%mend convert;
%convert(infilelist=name1 name2 name3 ...);
二种方法:
如果你的文件名有规律,例如 name1 name2 name3 name4 ... name20
你可以再写一个macro,调用你自己写的convert macro
%macro out_to_stata;
%do i =1 %to 20;
%convert(name&i);
%end;
%macro out_to_stata;
%out_to_stata;
s*********e
发帖数: 1051
3
for your first solution, you need to use pipe to obtain the list of file
names. otherwise, it is not generic.

【在 P**********c 的大作中提到】
: 一种方法:
: 你的文件名没有规律
: %macro convert (infilelist=);
: %let i=1;
: %let infile=%scan(&infilelist,&i);
: %do %while ("&infile"~="");
: proc export data=temp.&infile
: outfile="c:\temp\&infile..dta"
: dbms=stata replace;
: run;

j*****7
发帖数: 4348
4
libname test "X:\XXX\XXX\XXX";
proc sql noprint;
create table ddfdata as
select memname as dataset label='Data Set Name',
name as variable label='Variable Name',
label label='Variable Label',
type label='Variable Type',
count (distinct memname) into :totmem
from sashelp.vcolumn where libname='TEST'
order by dataset,name;
quit;
%macro trans;
data _null_;
set ddfdata;
by dataset notsorted;
retain b 1;
if first.dataset then do;
call symput(compress(trim(left('member'||trim(left(b)) ))),compress(trim(
left(dataset))));
call symput('totmem',put(b,2.));
b=b+1;
end;
run;
%put &totmem;
%do b = 1 %to &totmem;
proc export data=test.&&member&b
outfile="X:\XXX\XXX\XXX\stata\&&member&b..dta"
dbms=stata replace;
run;
%end ;
%mend trans ;
%trans;
1 (共1页)
进入Statistics版参与讨论
相关主题
Base sas/If else questionsHow to work on this dataset?
two sas adv questions如何用代码将多个sas数据集输出成csv文件
Proc SQL 能不能直接读 非 SAS format 的数据,txt , csv 等SAS: automatically generate xls file with updated date
请帮忙看3道SAS题。可以用sas直接改excel的worksheet的名字么?
proc export to Excel: can not read it!a sas question (about macro)
[合集] 一个sas问题How to import several excel files together?
在线等:急问大牛帮我看看SAS macro里的问题Is the following SAS code wrong?
如何在matlab中直接call R呢?[求助]用SAS建立多个工作簿的Excel文件
相关话题的讨论汇总
话题: stata话题: convert话题: macro话题: xxx话题: name