从命令行运行SAS过程

时间:2017-02-02 21:30:02

标签: shell unix sas

我有几个脚本用于从我正在进行更新的命令行运行简单的SAS命令。我遇到问题的是proc freq。它现在写得很好,但我希望能够改变输出的格式。

以下是工作代码:

#!/bin/bash
echo "libname home ''; proc freq data=home.$1; tables $2/ missing list;" > user$USER.sas 
nohup sas -memsize 0m -sortsize -0m -autoexec /users/me/sastools/autoexec.sas user$USER.sas
more user$USER.lst

现在,我做了一些更改,允许我更改输出格式。

#!/bin/bash
echo "libname home ''; proc freq data=home.$1; tables $2/ missing out=t outcum noprint; run;
proc print data=t(drop=percent cum_pct) noobs; format count cum_freq comma15.; run;" > user$USER.sas
nohup sas -memsize 0m -sortsize -0m -autoexec /users/me/sastools/autoexec.sas user$USER.sas
more user$USER.lst

如果我只在tables语句中指定一个变量,则新代码有效,但这种情况很少发生。当我尝试添加多个变量时,它只会返回第一个变量。

以下是一些如何运行的示例:

fr dataset var1*var2
fr 'dataset; where var1 = condition; weight var2;' var4*var5

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

此处的问题是list选项。即使指定了outcum#!/bin/bash echo "libname home ''; proc freq data=home.$1; tables $2/ missing out=t noprint; run; data t; set t(drop=percent); Cum_Freq + Count; run; proc print data=t noobs; format count cum_freq comma15.; run;" > user$USER.sas nohup sas -memsize 0m -sortsize -0m -autoexec /users/me/sastools autoexec.sas user$USER.sas more user$USER.lst 也仅适用于单向表。解决问题的方法是添加数据步骤来计算任何累积统计数据。

WKInterfaceDevice.current.playHaptic(.success)

我希望这可以帮助任何有类似问题的人。

答案 1 :(得分:0)

我怀疑*正在被扩展或以其他方式被视为*字符以外的其他内容。尝试引用该参数,当你通过它时可以避免这个问题。

fr dataset "var1*var2"