0

我想创建一个 unix 实用程序将 1 行插入 sas 数据集。运行时,此 scipt 将要求用户为数据集中的每个变量插入值(最好告诉他变量的类型和长度)。然后它将使用 EXPORT 命令将这些值传递给 SAS,然后 SAS 将为这些变量创建宏变量并使用 'proc sql; insert into' 将值插入数据集中。

data raw_str;
 /* init PDV */
 if 0 then
 set tracking_data;
 /* programmatic structure to enable addressing of vars */
 array a_c(*) _character_;
 array a_n(*) _numeric_;
run;

现在 raw_str 将变量的类型和长度与跟踪数据的相同

proc sql noprint;
  select distinct name 
  into : varlist separated by ' '
  from dictionary.columns
  where libname='WORK'
    and memname='raw_str';
quit;

然后我想将此列表传递给 unix,从那里我将要求用户输入这些变量的值,然后我将使用这些值附加到 tracking_data 中。

问题在于将值从 unix 传递到 sas 并为这些值创建宏变量

我还可以将变量的长度和类型传递给前端,告诉用户传递与 raw_str 数据集的类型和长度匹配的值

proc sql;
  insert into raw_str
  values (&val1, &val2, &val3...);
quit;

最后我可以使用 proc append 将其附加到原始数据中

4

1 回答 1

0

这是将用户输入的值从 UNIX 获取到 SAS 的一种可能方法:

  1. 让您的 UNIX shell 脚本将用户输入的值写入(格式一致的)临时文本文件,例如 CSV
  2. 编写一个可以读取文本文件并将值导入所需格式的 SAS 数据步骤。您可以运行 proc import 并查看日志以了解要使用的代码类型。
  3. 让脚本通过命令行调用 SAS,告诉它运行包含您编写的数据步骤的程序。
于 2014-08-30T19:30:47.327 回答