簡體   English   中英

從命令行運行 SAS 過程

[英]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選項。 即使指定了listoutcum僅適用於單向表。 規避問題的方法是添加一個數據步驟來計算任何累積統計量。

#!/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM