我需要使用SAS陣列來創建每個月的最大值,以確定哪個程序運行時間最長。SAS陣列 - 每月創建最大值
的數據是:
Month Value Program
Jan 8 A
Jan 6 B
Feb 2 C
Feb 1 A
Mar 9 C
Mar 6 B
等。
誰能告訴我如何使用語法
我需要使用SAS陣列來創建每個月的最大值,以確定哪個程序運行時間最長。SAS陣列 - 每月創建最大值
的數據是:
Month Value Program
Jan 8 A
Jan 6 B
Feb 2 C
Feb 1 A
Mar 9 C
Mar 6 B
等。
誰能告訴我如何使用語法
我不會用數組...我對數據進行排序,然後使用第一。符號。
Proc sort data=data;
by month descending value;
run;
Data longest;
set data;
by month descending value;
if first.month then output;
run;
這會給你一個最高值的月份記錄。
更新:
陣列的強度處理在一個觀察的變量。您可以保留數組,但是如果數據太大而無法排序,則使用Hash對象更適合於檢查各個觀察值中的變量,然後使用數據步驟進行處理。
正如Carolina提到的,數組用於在同一個觀察值中讀取變量。他們不適合在這裏完成你的任務。 一個簡單的PROC摘要可能是實現這一點的最簡單方法。我假設你運行所用時間的實際數據記錄爲幾分之一秒,因此實際上不可能有兩個程序在一個月內完全同時運行。如果沒有,那麼你將需要考慮在平行事件中應該怎麼做(proc sql會是更好的方法)。
這裏是代碼,如果您只想看到具有最高值的程序,而不是值本身,那麼使用'程序'刪除括號中的'值'。
data have;
input month $ value program $;
cards;
Jan 8 A
Jan 6 B
Feb 2 C
Feb 1 A
Mar 9 C
Mar 6 B
;
run;
proc summary data=have nway;
class month;
output out=want (drop=_:) maxid(value(program value))=;
run;
感謝這一點,它有助於我今天上午編寫答案的方式。我的經理讓我考慮如何使用陣列來完成我的訓練。 – user1250416 2012-03-05 21:10:05