你使用的是什么操作系统?您可以通过管道dir和*.sas7bdat过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行call execute()@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太

你使用的是什么操作系统?您可以通过管道dir和*.sas7bdat过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行call execute()@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太,sas,Sas,你使用的是什么操作系统?您可以通过管道dir和*.sas7bdat过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行call execute()@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太清楚。还有一件事。文件夹中有多个子文件夹。我正在从多个子文件夹中选择一个子文件夹。因此,如果我创建一个子文件夹列表,然后将其传递到我的程序中,这并没有多大作用,因为我还必须手动选择一个文件夹。谢谢“字符是怎么回事?你不能在数据集名称或类似的名称



你使用的是什么操作系统?您可以通过管道
dir
*.sas7bdat
过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行
call execute()
@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太清楚。还有一件事。文件夹中有多个子文件夹。我正在从多个子文件夹中选择一个子文件夹。因此,如果我创建一个子文件夹列表,然后将其传递到我的程序中,这并没有多大作用,因为我还必须手动选择一个文件夹。谢谢
字符是怎么回事?你不能在数据集名称或类似的名称中包含它,所以你在目录和子目录中循环,并转置其中的SAS数据集?还是我不明白?谢谢你的评论Alex!。是的,我正在尝试循环目录和子目录。现在目录和子目录都在同时更改。因此,对于文件夹var_1,子文件夹将是var''u 1。文件夹永远不会保持不变,但子文件夹会更改。您使用的是什么操作系统?您可以通过管道
dir
*.sas7bdat
过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行
call execute()
@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太清楚。还有一件事。文件夹中有多个子文件夹。我正在从多个子文件夹中选择一个子文件夹。因此,如果我创建一个子文件夹列表,然后将其传递到我的程序中,这并没有多大作用,因为我还必须手动选择一个文件夹。谢谢
字符是怎么回事?你不能在数据集名称或类似的名称中包含它,所以你在目录和子目录中循环,并转置其中的SAS数据集?还是我不明白?谢谢你的评论Alex!。是的,我正在尝试循环目录和子目录。现在目录和子目录都在同时更改。因此,对于文件夹var_1,子文件夹将是var''u 1。文件夹永远不会保持不变,但子文件夹会更改。您使用的是什么操作系统?您可以通过管道
dir
*.sas7bdat
过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行
call execute()
@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太清楚。还有一件事。文件夹中有多个子文件夹。我正在从多个子文件夹中选择一个子文件夹。因此,如果我创建一个子文件夹列表,然后将其传递到我的程序中,这并没有多大作用,因为我还必须手动选择一个文件夹。谢谢
字符是怎么回事?你不能在数据集名称或类似的名称中包含它,所以你在目录和子目录中循环,并转置其中的SAS数据集?还是我不明白?谢谢你的评论Alex!。是的,我正在尝试循环目录和子目录。现在目录和子目录都在同时更改。因此,对于文件夹var_1,子文件夹将是var''u 1。文件夹永远不会保持不变,但子文件夹会更改。您使用的是什么操作系统?您可以通过管道
dir
*.sas7bdat
过滤器以及Windows上的递归选项获取文件列表,并将其读入数据集中,然后执行
call execute()
@AlexA.:我正在使用Windows。你能给我举一些例子来说明你的建议吗。我不太清楚。还有一件事。文件夹中有多个子文件夹。我正在从多个子文件夹中选择一个子文件夹。因此,如果我创建一个子文件夹列表,然后将其传递到我的程序中,这并没有多大作用,因为我还必须手动选择一个文件夹。谢谢
字符是怎么回事?你不能在数据集名称或类似的名称中使用它。非常感谢Alex的帮助。我试试这个,然后告诉你。再次感谢。谢谢亚历克斯的回答。你的代码有一个问题,但是我修改了你的代码来解决我的问题。我的设置是,有多个文件夹,每个文件夹有多个子文件夹,其中有多个sas数据集。我必须选择一个特定的文件夹、子文件夹和sas数据集进行转换。但您的代码正在转换所有文件夹和子文件夹的所有sas数据集。所以我编辑了你的代码,效果很好。非常感谢Alex的帮助。我试试这个,然后告诉你。再次感谢。谢谢亚历克斯的回答。你的代码有一个问题,但是我修改了你的代码来解决我的问题。我的设置是,有多个文件夹,每个文件夹有多个子文件夹,其中有多个sas数据集。我必须选择一个特定的文件夹、子文件夹和sas数据集进行转换。但您的代码正在转换所有文件夹和子文件夹的所有sas数据集。所以我编辑了你的代码,效果很好。非常感谢Alex的帮助。我试试这个,然后告诉你。再次感谢。谢谢亚历克斯的回答。你的代码有一个问题,但是我修改了你的代码来解决我的问题。我的设置是,有多个文件夹,每个文件夹有多个子文件夹,其中有多个sas数据集。我必须选择一个特定的文件夹、子文件夹和sas数据集进行转换。但您的代码正在转换所有文件夹和子文件夹的所有sas数据集。所以我编辑了你的代码,效果很好。非常感谢Alex的帮助。我试试这个,然后告诉你。再次感谢。谢谢亚历克斯的回答。你的代码有一个问题,但是我修改了你的代码来解决我的问题。我的设置是,有几个
OPTIONS MPRINT MLOGIC SYMBOLGEN;

%LET LOC=E:\folder;

%macro test1(k,l);

libname libary "&loc.\&k\&l.";

data dataset_&l.;
set libary.dataset_original;
run;


proc transpose data=dataset_&l. out=dataset_&l._T;
run;

%mend;

%test1(var_1,var'_1);
%test1(var_2,var'_2);
%test1(var_3,var'_3);
OPTIONS MPRINT MLOGIC SYMBOLGEN;

%LET LOC=E:\folder;

%let k=var_1 var_2 var_3;

%let l=var'_1 var'_2 var'_3;

%macro words(string);
  %local count word;
  %let count=1;
  /* The third argument of the %QSCAN function specifies the delimiter */
  %let word=%qscan(&string,&count,%str( ));
  %do %while(&word ne);
    %let count=%eval(&count+1);
    %let word=%qscan(&string,&count,%str( ));
  %end;
  %eval(&count-1)
%mend words;

%macro test1(k,l);

libname libary "&loc.\&k\&l.";

data dataset_&l.;
set libary.dataset_original;
run;


proc transpose data=dataset_&l. out=dataset_&l._T;
run;

%mend;


%macro test();

%do i=1 %to %words(&k.);
%do j=1 %to %words(&l.);
%let var=%scan(&k.,&i.,str());
%let var1=%scan(&l.,&j.,str());
%test1(&var.,&var1.);

%end;
%end;

%mend;

%test();