@@ -14,18 +14,18 @@ renameScoreCol <- function(filteredScoreDf, scoreType, coverageInterval) {
14
14
15
15
filterOverAllLocations <- function (filteredScoreDf , scoreType , hasAsOfData = FALSE , filterDate ) {
16
16
locationsIntersect <- list ()
17
- filteredScoreDf <- filteredScoreDf % > % filter(! is.na(Score ) | target_end_date > = filterDate )
17
+ filteredScoreDf <- filter(filteredScoreDf , ! is.na(Score ) | target_end_date > = filterDate )
18
18
# Create df with col for all locations across each unique date, ahead and forecaster combo
19
19
locationDf <- filteredScoreDf %> %
20
20
group_by(forecaster , target_end_date , ahead ) %> %
21
21
summarize(location_list = paste(sort(unique(geo_value )), collapse = " ," ))
22
- locationDf <- locationDf % > % filter(location_list != c(" us" ))
22
+ locationDf <- filter(locationDf , location_list != c(" us" ))
23
23
# Create a list containing each row's location list
24
24
locationList <- sapply(locationDf $ location_list , function (x ) strsplit(x , " ," ))
25
25
locationList <- lapply(locationList , function (x ) x [x != " us" ])
26
26
# Get the intersection of all the locations in these lists
27
27
locationsIntersect <- unique(Reduce(intersect , locationList ))
28
- filteredScoreDf <- filteredScoreDf % > % filter(geo_value %in % locationsIntersect )
28
+ filteredScoreDf <- filter(filteredScoreDf , geo_value %chin % locationsIntersect )
29
29
if (scoreType == " coverage" ) {
30
30
if (hasAsOfData ) {
31
31
filteredScoreDf <- filteredScoreDf %> %
@@ -56,40 +56,23 @@ filterOverAllLocations <- function(filteredScoreDf, scoreType, hasAsOfData = FAL
56
56
# Only use weekly aheads for hospitalizations
57
57
# May change in the future
58
58
filterHospitalizationsAheads <- function (scoreDf ) {
59
- scoreDf [" weekday" ] <- weekdays(as.Date(scoreDf $ target_end_date ))
60
- scoreDf <- scoreDf %> % filter(weekday == HOSPITALIZATIONS_TARGET_DAY )
59
+ days_list <- c(" Sunday" , " Monday" , " Tuesday" , " Wednesday" , " Thursday" , " Friday" , " Saturday" )
60
+ # Make sure to use `data.table`'s `wday`; `lubridate` has a function of the same name.
61
+ scoreDf [" weekday" ] <- days_list [data.table :: wday(as.Date(scoreDf $ target_end_date , " %Y-%m-%d" ))]
62
+ scoreDf <- filter(scoreDf , weekday == HOSPITALIZATIONS_TARGET_DAY )
63
+ scoreDf $ ahead_group <- case_when(
64
+ scoreDf $ ahead > = HOSPITALIZATIONS_OFFSET & scoreDf $ ahead < 7 + HOSPITALIZATIONS_OFFSET ~ 1L ,
65
+ scoreDf $ ahead > = 7 + HOSPITALIZATIONS_OFFSET & scoreDf $ ahead < 14 + HOSPITALIZATIONS_OFFSET ~ 2L ,
66
+ scoreDf $ ahead > = 14 + HOSPITALIZATIONS_OFFSET & scoreDf $ ahead < 21 + HOSPITALIZATIONS_OFFSET ~ 3L ,
67
+ scoreDf $ ahead > = 21 + HOSPITALIZATIONS_OFFSET & scoreDf $ ahead < 28 + HOSPITALIZATIONS_OFFSET ~ 4L ,
68
+ TRUE ~ NA_integer_
69
+ )
61
70
62
- oneAheadDf <- scoreDf %> %
63
- filter(ahead > = HOSPITALIZATIONS_OFFSET ) %> %
64
- filter(ahead < 7 + HOSPITALIZATIONS_OFFSET ) %> %
65
- group_by(target_end_date , forecaster ) %> %
66
- filter(ahead == min(ahead )) %> %
67
- mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [1 ])
68
-
69
- return (bind_rows(
70
- scoreDf %> %
71
- filter(ahead > = HOSPITALIZATIONS_OFFSET ) %> %
72
- filter(ahead < 7 + HOSPITALIZATIONS_OFFSET ) %> %
73
- group_by(target_end_date , forecaster ) %> %
74
- filter(ahead == min(ahead )) %> %
75
- mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [1 ]),
76
- scoreDf %> %
77
- filter(ahead > = 7 + HOSPITALIZATIONS_OFFSET ) %> %
78
- filter(ahead < 14 + HOSPITALIZATIONS_OFFSET ) %> %
79
- group_by(target_end_date , forecaster ) %> %
80
- filter(ahead == min(ahead )) %> %
81
- mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [2 ]),
82
- scoreDf %> %
83
- filter(ahead > = 14 + HOSPITALIZATIONS_OFFSET ) %> %
84
- filter(ahead < 21 + HOSPITALIZATIONS_OFFSET ) %> %
85
- group_by(target_end_date , forecaster ) %> %
86
- filter(ahead == min(ahead )) %> %
87
- mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [3 ]),
71
+ return (
88
72
scoreDf %> %
89
- filter(ahead > = 21 + HOSPITALIZATIONS_OFFSET ) %> %
90
- filter(ahead < 28 + HOSPITALIZATIONS_OFFSET ) %> %
91
- group_by(target_end_date , forecaster ) %> %
73
+ filter(! is.na(ahead_group )) %> %
74
+ group_by(target_end_date , forecaster , ahead_group ) %> %
92
75
filter(ahead == min(ahead )) %> %
93
- mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [4 ])
94
- ))
76
+ mutate(ahead = HOSPITALIZATIONS_AHEAD_OPTIONS [ahead_group ])
77
+ )
95
78
}
0 commit comments