-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFantasyPros.R
99 lines (78 loc) · 2.51 KB
/
FantasyPros.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# position - qb, rb, te, wr, k
# week - int
getUrl <- function(position, week, type="projections")
{
paste('http://www.fantasypros.com/nfl/', type,'/', position, '.php?week=', week, sep='')
}
parseName <- function(val)
{
val$Player <- gsub('Griffin III', 'Griffin', val$Player)
val$Player <- gsub('Beckham Jr.', 'Beckham', val$Player)
val$Player <- gsub('Ginn Jr.', 'Ginn', val$Player)
splitNames <- strsplit(val$Player, ' ')
firstNames <- NULL
lastNames <- NULL
teams <- NULL
for (i in 1:length(splitNames))
{
firstNames <- rbind(firstNames, splitNames[[i]][1])
lastNames <- rbind(lastNames, splitNames[[i]][2])
teams <- rbind(teams, splitNames[[i]][3])
}
val$First.Name <- firstNames
val$Last.Name <- lastNames
val$Team <- teams
val
}
normalizePlayers <- function(val)
{
names(val)[names(val) == "Std Dev"] <- "StdDev"
newFrame <- data.frame(First.Name=val$First.Name, Last.Name=val$Last.Name, Position=val$Position, stringsAsFactors=FALSE)
cols <- c('FPTS', 'StdDev', 'Best', 'Worst')
for(col in cols)
{
if(!is.null(val[[col]]))
{
newFrame <- cbind(newFrame, as.numeric(val[[col]]))
names(newFrame)[dim(newFrame)[2]] <- col
}
}
newFrame
}
addPPR <- function(val)
{
if(!is.null(val$REC) && PPR > 0)
{
val$REC <- as.numeric(val$REC)
val$FPTS <- as.numeric(val$FPTS)
val$FPTS <- val$FPTS + (val$REC * PPR)
}
val
}
getStatsForWeek <- function(week, type="projections")
{
qbs <- readHTMLTable(getUrl("qb", week, type), stringsAsFactors = FALSE)$data
wrs <- readHTMLTable(getUrl("wr", week, type), stringsAsFactors = FALSE)$data
rbs <- readHTMLTable(getUrl("rb", week, type), stringsAsFactors = FALSE)$data
tes <- readHTMLTable(getUrl("te", week, type), stringsAsFactors = FALSE)$data
ks <- readHTMLTable(getUrl("k", week, type), stringsAsFactors = FALSE)$data
qbs <- parseName(qbs)
wrs <- parseName(wrs)
rbs <- parseName(rbs)
tes <- parseName(tes)
ks <- parseName(ks)
qbs$Position <- "QB"
wrs$Position <- "WR"
rbs$Position <- "RB"
tes$Position <- "TE"
ks$Position <- "K"
qbs <- addPPR(qbs)
wrs <- addPPR(wrs)
rbs <- addPPR(rbs)
tes <- addPPR(tes)
ks <- addPPR(ks)
all <- rbind(normalizePlayers(qbs), normalizePlayers(wrs), normalizePlayers(rbs), normalizePlayers(tes), normalizePlayers(ks))
}
all <- getStatsForWeek(week)
rankings <- getStatsForWeek(week, "rankings")
all <- merge(all, rankings, by=c("First.Name", "Last.Name", "Position"), suffixes=c('', ''), all.x = TRUE)