我需要爲我在R中模擬足球比賽的循環寫一個long if語句。目前我使用這段代碼模擬比賽複雜if語句
mod3=glm(formula = Score ~ as.factor(Attack) + as.factor(Defence) +as.factor(Home)+Division, family = poisson, data = football)
for (i in 1:92){
for (j in 1:92){
if (i!=j){
teamHome=levels(football$Attack)[i]
teamAway=levels(football$Attack)[j]
homeScore=rpois(1,predict.glm(mod3, data.frame(Attack=teamHome,Defence=teamAway,Home="Y "),type="response"))
awayScore=rpois(1,predict.glm(mod3, data.frame(Attack=teamAway,Defence=teamHome,Home="N "),type="response"))
Result= if(homeScore>awayScore){
Result="H"
} else if(homeScore<awayScore){
Result="A"
}else if(homeScore==awayScore){
Result="D"
}
results<-print(paste(teamHome,homeScore," ",teamAway,awayScore,Result),quote=F)
}
}
}
的結果目前從我的泊松迴歸幫助進攻,防守和家庭的分數模擬的結果。然而,我需要添加另一個因子「分區」,如果上半場(46)隊中的任何一個被模擬爲對方的「teamHome」和「teamAway」,我會返回「S」的「分區」響應,並且如果底部46個團隊被模擬反對彼此,我返回「師」響應「S1」。我怎麼會encorporate這在我環路下面是我對teamHome和teamAway水平參考
[1] "Manchester United " "Manchester City " "Chelsea "
[4] "Arsenal " "Tottenham " "Everton "
[7] "Liverpool " "WBA " "Swansea "
[10] "West Ham " "Norwich " "Fulham "
[13] "Stoke " "Southampton " "Aston Villa "
[16] "Newcastle " "Sunderland " "Wigan "
[19] "Reading " "QPR " "Cardiff "
[22] "Hull " "Watford " "Brighton "
[25] "Crystal Palace " "Leicester " "Bolton "
[28] "Nottingham Forest " "Charlton " "Derby "
[31] "Burnley " "Birmingham " "Leeds "
[34] "Ipswich " "Blackpool " "Middlesbrough "
[37] "Blackburn " "Sheffield Wednesday " "Huddersfield "
[40] "Millwall " "Barnsley " "Peterborough "
[43] "Wolves " "Bristol City " "Doncaster "
[46] "Bournemouth " "Brentford " "Yeovil "
[49] "Sheffield United " "Swindon " "Leyton Orient "
[52] "Milton Keynes Dons " "Walsall " "Crawley "
[55] "Tranmere " "Notts County " "Crewe "
[58] "Preston " "Coventry " "Shrewsbury "
[61] "Carlisle " "Stevenage " "Oldham "
[64] "Colchester " "Scunthorpe " "Bury "
[67] "Hartlepool " "Portsmouth " "Gillingham "
[70] "Rotherham " "Port Vale " "Burton "
[73] "Cheltenham " "Northampton " "Bradford "
[76] "Chesterfield " "Oxford " "Exeter "
[79] "Southend " "Rochdale " "Fleetwood "
[82] "Bristol Rovers " "Wycombe " "Morecambe "
[85] "York " "Accrington " "Torquay "
[88] "AFC Wimbledon " "Plymouth " "Dagenham and Redbridge"
[91] "Barnet " "Aldershot "
如果你覺得你能幫助或有任何不清楚我的解釋,需要解釋請向爲我急需您的幫助上這個。我的數據集的形式
例如
Attack Defence Score Home Division
1 Chelsea Aston Villa 8 Y S
2 Arsenal Reading 4 N S
3 Arsenal Newcastle 7 Y S
4 Port Vale Burton 7 Y S
5 Liverpool Newcastle 6 N S
6 Watford Leeds 6 N S
感謝
史蒂夫
你能不能簡單地初始化'division < - factor(「既不」,levels = c(「S」,「S1」,「既不」),然後設置'if(max(i,j)<= 46)division [1] < - 「S」'和'if(min(i,j)> 46)division [1] < - S1'如果球隊不是來自同一半桌子的話,希望進行比賽,同樣,列表中的第7項出現在錯誤的地方;) –
@GavinKelly嗨加文,感謝我的迴應,我試圖用上半場,下半部分作爲一個例子來說明所需要的if語句,因爲不知道大多數人會理解足球桌。但實際上我也需要一個分區迴應,其中排名前20的對陣20-44(例如英超和冠軍)以及聯賽之間的所有其他組合。任何想法如何格式化?抱歉關於肝臟放置我使用去年的數據! – StephenDakin
@mvw上半部分意味着前面輸出的前46名球隊 – StephenDakin