【发布时间】:2016-02-08 00:21:06
【问题描述】:
我被分配了一个我不知道从哪里开始的任务。这是上下文:
数据中有一个变量,比如 VAR1,表示一堆图像文件的目录。所以对于观察 1,VAR1 可能看起来像 D:\Project\Data\Images\Image1.tiff 等等。当然,那些图像文件存在于计算机中。
我需要做的是找出 SAS 程序,然后使用批处理文件自动运行它们。当批处理文件运行时,它会以某种方式一个一个地打开图像文件。 “一个接一个”,我的意思是它首先打开一个图像文件,然后在关闭该文件时,它会打开下一个图像文件,直到列表末尾。
更好的是,批处理文件会复制原始图像文件并将它们放在某个文件夹(例如 D:\Project\Data\Temp 图像)中,然后再打开它们。那是为了确保原始数据不受影响。
你知道我如何在 SAS 中编写这样的程序吗?我得到了以下 SPSS 文件以供参考,它可以很好地完成这项工作。我对 SPSS 了解得不够多,无法理解它是如何工作的每一个细节。 dir5和tiff5这两个变量指定了图片文件的位置,变量SCQID和ohhscqid只是ID变量。
string out2 (a200).
compute out2=concat('copy "', ltrim(rtrim(dir5)),"\", tiff5, '"',' "c:\temp\temp.tiff"').
write outfile='E:\Data\Outcome.bat'/'@echo SCQ ID ' ohhscqid .
write outfile='E:\Data\Outcome.bat'/out2.
write outfile='E:\Data\Outcome.bat'/'@"C:\Program Files\Microsoft Office\Office14\OIS.exe" "c:\temp\temp.tiff"'.
execute.
我做了功课,并想出了一种我想要的方法。虽然不是编程的最佳方式,但想法是这样的。
data batwide;set have;
echo = '@echo SCQ ID '||ohhscqid;
predir = 'copy '||'"'||strip(dir5)||strip('\')||strip(tiff5)||strip('"');
preexec = '@'||strip('"')||strip('C:\Program Files\Microsoft Office\Office14\OIS.exe')||strip('"');
temp = '"'||strip('c:\temp\temp.tiff')||strip('"');
run;
data batwide; set batwide;
dir = catx(' ',predir,temp);
exec = catx(' ',preexec,temp);
run;
data batlong;set batwide;
format bat $200.;
bat = echo;output;
bat = dir;output;
bat = exec;output;
keep bat;
run;
data _null_;
set batlong;
file "E:\SAS codes and files\batchfile.bat";
put bat;
run;
【问题讨论】:
-
这不是 SAS 基本代码。请告诉我们它是什么。可能你忘记了标签。
标签: sas