[英]Running SAS Procedures from Command Line
我有一些腳本用於從我正在更新的命令行運行簡單的 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
在此先感謝您的幫助。
這里的問題是outcum
選項。 即使指定了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
我希望這可以幫助任何有類似問題的人。
我懷疑*
正在被擴展或以其他方式被視為*
字符以外的其他東西。 當您通過它時,請嘗試引用該參數以避免此問題。
fr dataset "var1*var2"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.