2013-08-17 191 views
0

我有一些根據兩個變量對觀察值進行排名的數據(使用代碼創建)。在這種情況下,它將玩家排在第一位,在第二位下注並創建兩個「等級」變量。我想要做的是根據這兩個變量的函數來排列觀察結果(如兩個變量的平均值),我想在PROC RANK命令本身中執行此操作,而不是使用初始數據步驟作爲在我將所需的所有變量複製之後,排名會得到相當程度的參與。我可以將操作員放入PROC RANK語句嗎?而不是這樣做:SAS:PROC RANK:在變量上使用運算符

Proc rank data=want ties=mean out=ranked groups=2; 
     var bet1stake bet2stake; 
     ranks bet1stakeRank bet2stakeRank; 
    run; 

我想做到這一點:

Proc rank data=want ties=mean out=ranked groups=2; 
     var avg(bet1stake, bet2stake); 
     ranks firstTwoBetsRank; 
    run; 

這可能嗎?

這是如何創建完整的示例數據。

data have; 
     input username $ betdate : datetime. stake winnings; 
     dateOnly = datepart(betdate) ; 
     format betdate DATETIME.; 
     format dateOnly ddmmyy8.; 
     datalines; 
     player1 12NOV2008:12:04:01 90 -90 
     player1 04NOV2008:09:03:44 100 40 
     player2 07NOV2008:14:03:33 120 -120 
     player1 05NOV2008:09:00:00 50 15 
     player1 05NOV2008:09:05:00 30 5 
     player1 05NOV2008:09:00:05 20 10 
     player2 09NOV2008:10:05:10 10 -10 
     player2 15NOV2008:15:05:33 35 -35 
     player1 15NOV2008:15:05:33 35 15 
     player1 15NOV2008:15:05:33 35 15 
    run; 

    proc sort data=have; 
     by username betdate; 
    run; 

    data have; 
    set have; 
     by username betdate; 
     retain eventTime; 
     if first.username then eventTime = 0; 
     if first.betdate then eventTime + 1; 
     run; 

    proc sql; 
    create table want as 
    select 
      distinct username, 
      (select distinct stake from have where username = main.username and eventTime = 1) as bet1Stake, 
      (select distinct stake from have where username = main.username and eventTime = 2) as bet2Stake 
     from have main; 
    quit; 

    Proc rank data=want ties=mean out=want groups=2; 
     var bet1stake bet2stake; 
     ranks bet1stakeRank bet2stakeRank; 
    run; 

感謝您的任何幫助。

回答

2

恐怕您不能將運算符應用到您想要對您的觀察結果進行排名的變量上。 你的選擇是要麼使用DATA一步做運營商的兩個應用程序和排名的計算

或者 使用Data step viewSQL view應用運營商作爲中間步驟,以防萬一,如果你是關心磁盤空間。

如果您從SQL數據庫中提取數據(假設它支持窗口函數),您應該完全按照傳遞到數據庫的某些SQL代碼來執行您正在嘗試執行的操作。

+0

我會嘗試使用DATA STEP VIEW來做到這一點,所以。它就像一個表(但不是真的存儲爲表)嗎? – user2146441

+0

是的,數據步驟視圖與如何使用數據表幾乎完全相同。 – Joe