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;
感謝您的任何幫助。
我會嘗試使用DATA STEP VIEW來做到這一點,所以。它就像一個表(但不是真的存儲爲表)嗎? – user2146441
是的,數據步驟視圖與如何使用數據表幾乎完全相同。 – Joe