2014-07-07 70 views
2

我有一個有開始時間,結束時間,停留時間(結束開始)和#個主題的數據。我正在嘗試創建一個圖表,線條,條形或直方圖,以顯示特定時間有多少個主題。所以水平軸從00:00到24:00有時間,垂直軸有主題總數或%。開始時間和結束時間(以頻率或百分比表示)

Start End Subject Stay 
01:00 02:00 1  01:00 
01:00 01:45 1  00:45 
02:00 21:00 1  19:00 
03:10 14:10 1  11:00 

該數據集非常龐大,我正在使用SAS企業指南和Excel創建圖表。

我已經嘗試過PROC GPLOT,但它並沒有提供我所要找的東西。對線圖和條形圖(堆疊)做了同樣的事情,但不能。我不確定是否有更簡單的方法來做到這一點。這是我在SAS EG中使用的代碼。試圖在Excel中創建一個堆積條形圖。

PROC GPLOT DATA=Input; 
PLOT Stay * start/
AREAS=1 
FRAME VAXIS=AXIS1 
HAXIS=AXIS2 
; 

RUN; QUIT; 

請幫忙。

感謝

回答

0

您需要將您的數據來創建你在看(小時每個時間段一行,例如,如果你想顯示的人誰每個過程中存在的任何一點#小時)。

你可以做這樣的事情:

data want; 
set have; 
do time=intnx('Hour',start,0) to end by 3600; *start at top of current hour, increment by 1 hour (3600 seconds); 
    output; 
end; 
run; 

然後你就可以在條形圖中繪製的time變量。

由於您使用的是重疊期 - 您的數據可能會對這些方法中的某些(如ETS)造成問題,因此您的主體1有4個重疊的重疊。如果這些日期不同,您可能需要爲主題添加一個日曆標記以使它們獨一無二。

示例使用您的數據:

data have; 
input Start :time5. End :time5. Subject Stay :time5.; 
format start end stay time5.; 
datalines; 
01:00 02:00 1  01:00 
01:00 01:45 2  00:45 
02:00 21:00 2  19:00 
03:10 14:10 3  11:00 
;;;; 
run; 

data want; 
set have; 
do hour_mark = intnx('Hour',start,0) to end by 3600; 
output; 
end; 
keep hour_mark subject; 
format hour_mark time5.; 
run; 

proc sgplot data=want; 
vbar hour_mark; 
run; 

你可以使用一個更有趣的數據集運行相同的例子:

data have; 
if _n_=1 then call streaminit(7); 
do subject = 1 to 100; 
    start=floor(rand('Uniform')*86000);*almost all day, but make sure we have a bit of room for end; 
    end =floor(rand('Uniform')*(86400-start))+start; 
    stay=end-start; 
    output; 
end; 
format start end stay time5.; 
run; 

,然後使用相同的匱乏和SGPLOT代碼。

+0

謝謝喬。我已經有一個這樣的專欄。我添加了一個條件,如果開始介於0-1和1之間。我知道這不是最好的辦法。我試過你的代碼,它給了我這個錯誤 - 「錯誤:無效的DO循環控制信息,INITIAL或TO表達式丟失或BY表達式丟失,零, 或無效。」 – learnlearn10

+0

使用PROC EXPAND嘗試 - proc expand data =輸入輸出=從=分鐘到=小時的輸出; id start; 開始; convert subject/method = aggregate observed = average; 跑;/*出現此錯誤 - 「錯誤:發現重複ID值的觀察值,數據集 輸入中的觀察值編號2處的ID變量值start = 0:04:00與先前的觀察值相同。 – learnlearn10

+0

我不明白你的第一條評論。您顯示的數據在02:00到21:00之間有一行。我建議你需要19或20行(取決於你如何定義的東西)。你的數據不是這樣嗎? – Joe

相關問題