2015-06-19 213 views
-2

計數我有以下列SAS創建其他變量

Var_1  
    3456 
    3456 
    3456 
    6 
    6 
    71 
    71 
    71 
    71 

我要創建這個數據的另一個變量,這將使我的每個號碼重複了多少遍的計數所以變量會看像這樣:

 Count 
     3 
     2 
     4 

我不知道或線索如何繼續這一點。 Proc Freq中有什麼可以使用的?

+0

你想計算整個列的重複次數還是每次連續的相同值的重複次數? – user667489

+0

你看過你可以使用什麼嗎? – Joe

+0

你想要一張新桌子還是包含在原始桌子上? Proc Freq,Proc SQL和Proc Means是一些最常用的方法。 – Reeza

回答

0

簡單的解決方案:PROC SQL:

data tbl; 
input var1; 
cards; 
3456 
3456 
3456 
6 
6 
71 
71 
71 
71 
; 
run; 

proc sql; 
create table tbl2 as 
select var1, 
     count(var1) as count 
from tbl 
group by var1 
; 
quit; 

如果你真的只是想該列(計數),你可以只查詢計數(VAR1),但不知道你爲什麼會想一列顯示計數沒有附加值。如果你真的想爲每個值的計數創建一個單獨的宏變量,你可以使用proc sql select into: ......如果這是你所問的。

+0

如果我想爲不同的數據集做這件事,我怎樣才能把它變成一個marco? 因此,我可以做一些宏調用,而不是對不同的數據集運行相同的proc sql不同的時間? – user2916331

+0

你只需要宏proc sql部分,並使用數據集名稱(你想創建)和變量(你想要計數的變量)作爲參數。然後把它叫出來......有些東西像%count(table,var); – SMW

+0

有趣。我不知道我可以使用proc sql與宏 – user2916331

0

我認爲沒有清楚寫下問題是我的錯。我的代碼的目的是統計廣告客戶投放在線的招聘廣告的數量。現在我有一個廣告客戶專欄(如麥當勞),但是沒有專欄記錄麥當勞提供的廣告工作數量。他們只有一個像(Var_1)這樣的值,它代表他們所提出的特定工作的代碼。所以我基本上試圖統計廣告客戶提供的所有代碼(Var_1),然後將他們總計起來,以獲得所提供職位數量的總數。我看了很多在線,但還沒有找到解決方案。我認爲我可以使用Proc Freq和Proc Means來獲取Var_1的「N」值,並將其添加到總數中。我通過Proc Sql查看,但我不熟悉它。所以我不確定它是否會起作用。