-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathavgPlayerCreate.R
54 lines (41 loc) · 2.24 KB
/
avgPlayerCreate.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
print('Creating avgPlayer and applying Bonuses')
bonusCutoff = 7
if (fdPoints) {
print('Applying FanDuel weights')
num_weights = length(unique(playerScrapeMerge$Source))
playerScrapeMerge$Weights = ifelse(playerScrapeMerge$Source=='FanDuel', fdPoints.weight, (1-fdPoints.weight)/(num_weights-1) )
} else { playerScrapeMerge$Weights=1 }
#avgPlayer = ddply(playerScrapeMerge, .(Key), summarize, mean=mean(PredictedPoints), min=min(PredictedPoints), max=max(PredictedPoints), freq=length(PredictedPoints))
avgPlayer = ddply(playerScrapeMerge, .(Key), function(X)
data.frame(
mean.weight=weighted.mean(X$PredictedPoints,X$Weights),
mean.nonweight = mean(X$PredictedPoints),
min=min(X$PredictedPoints),
max=max(X$PredictedPoints),
freq=length(X$PredictedPoints)
))
avgPlayer = merge(avgPlayer, fdSalary, by = 'Key', all = TRUE)
#str(avgPlayer)
#sum(is.na(avgPlayer$mean))
#sum(is.na(avgPlayer$Salary))
MISSING = avgPlayer[is.na(avgPlayer$mean.weight) | is.na(avgPlayer$Salary),]
write.csv(MISSING, paste0('Exports/week',week.prompt,'_MISSING.csv'))
#REMOVE DOUBTFUL, OUT, IR, leave probable and questionable
avgPlayer = avgPlayer[!(avgPlayer$`Injury Indicator` %in% c('O','IR','D')),]
#Remove MISSING
avgPlayer = avgPlayer[!(is.na(avgPlayer$mean.weight) | is.na(avgPlayer$Salary)),]
#length(avgPlayer$mean)
avgPlayer = avgPlayer[avgPlayer$mean.weight > 1,]
avgPlayer = avgPlayer[order(-avgPlayer$Salary,-avgPlayer$mean.weight),]
#temp=avgPlayer // avgPlayer=temp
if (madBonus) {avgPlayer = addMaddenBonus(avgPlayer)}
if (homeBonus) {avgPlayer = addHomeBonus(avgPlayer)}
if (dlBonus) {avgPlayer = deepLearningBonus(avgPlayer)}
bonuses = ifelse(rep(dlBonus,length(avgPlayer$Key)),avgPlayer$deepBonus,0) +
ifelse(rep(homeBonus,length(avgPlayer$Key)),avgPlayer$bonusPositionHome,0) +
ifelse(rep(madBonus,length(avgPlayer$Key)), avgPlayer$Bonus, 0 )
avgPlayer$mean = (1+bonuses)*avgPlayer$mean.weight
# Added safety blanket from over-evaluation
avgPlayer$cutoffHit = ifelse(avgPlayer$mean - avgPlayer$mean.weight > bonusCutoff, TRUE, FALSE)
avgPlayer$mean = ifelse(avgPlayer$cutoffHit, avgPlayer$mean.weight + 7, avgPlayer$mean)
write.csv(avgPlayer,paste0('Exports/week',week.prompt,'_avgPlayerWithMaddentest.csv'), row.names=FALSE)