2014-03-25 124 views
0

以下示例數據包含描述多位玩家下注的變量。Stata:首次出現次數,變量唯一出現次數總和

我該如何計算每個玩家的第一個bettype,第一個betprice,足球投注數量,棒球投注數量,每個客戶的獨特價格數量以及每個用戶名的唯一投注類型數量?

clear 
input str16 username str40 betdate stake str16 bettype betprice str16 sport 
player1 "12NOV2008 12:04:33" 90 SGL 5 SOCCER 
player1 "04NOV2008:09:03:44" 30 SGL 4 SOCCER 
player2 "07NOV2008:14:03:33" 120 SGL 5 SOCCER 
player1 "05NOV2008:09:00:00" 50 SGL 4 SOCCER 
player1 "05NOV2008:09:05:00" 30 DBL 3 BASEBALL 
player1 "05NOV2008:09:00:05" 20 DBL 4 BASEBALL 
player2 "09NOV2008:10:05:10" 10 DBL 5 BASEBALL 
player2 "15NOV2008:15:05:33" 35 DBL 5 BASEBALL 
player1 "15NOV2008:15:05:33" 35 TBL 5 BASEBALL 
player1 "15NOV2008:15:05:33" 35 SGL 4 BASEBALL 
end 

generate double timestamp=clock(betdate,"DMY hms") 
format timestamp %tc 

generate double dateonly=date(betdate,"DMY hms") 
format dateonly %td 

generate firsttype 
generate firstprice 
generate soccercount 
generate baseballcount 
generate uniquebettypecount 
generate uniquebetpricecount 

回答

3

這是一個有點接近保證金,作爲一個「請給我的代碼」的問題,與自己的解決方案沒有嘗試。

第一類和價格都

bysort username (timestamp) : gen firsttype = bettype[1] 
bysort username (timestamp) : gen firstprice = betprice[1] 

足球和棒球投注的號碼是

egen soccercount = total(sport == "SOCCER"), by(username) 
egen baseballcount = total(sport == "BASEBALL"), by(username) 

不同[不是唯一!]遊戲類型的數量是

bysort username bettype : gen work = _n == 1 
egen uniquebettypecount = total(work), by(username) 

和另一個問題是一樣的(但是replace work)。另一種方法是

egen work = tag(username bettype) 
egen uniquebettypecount = total(work), by(username) 

什麼是所有這些變量的特點是相同的值重複每個組內的所有值。例如,firsttype對每個不同的username具有相同的值。通常你只想使用每個值一次。到的一個關鍵是剛使用過egen功能tag(),例如

egen usertag = tag(username) 

隨後的if usertag用途需要的時候。 (if usertagif usertag == 1有用習慣。)

一些閱讀建議:

by:http://www.stata-journal.com/sjpdf.html?articlenum=pr0004

egenhttp://www.stata.com/help.cgi?egen

在不同的觀測(爲什麼這個詞 「獨一無二」 是誤導):http://www.stata-journal.com/sjpdf.html?articlenum=dm0042