diff --git a/modules/Functions/Functions.Rmd b/modules/Functions/Functions.Rmd index fdf7ceab..5e20fb3c 100644 --- a/modules/Functions/Functions.Rmd +++ b/modules/Functions/Functions.Rmd @@ -46,13 +46,13 @@ function_name <- function(arg1, arg2, ...) { Here we will write a function that multiplies some number `x` by 2: ```{r} -times_2 <- function(x) x * 2 +div_100 <- function(x) x / 100 ``` When you run the line of code above, you make it ready to use (no output yet!). Let's test it! ```{r comment=""} -times_2(x = 10) +div_100(x = 600) ``` @@ -61,16 +61,10 @@ times_2(x = 10) Adding the curly brackets - `{}` - allows you to use functions spanning multiple lines: ```{r comment=""} -times_2 <- function(x) { - x * 2 +div_100 <- function(x) { + x / 100 } -times_2(x = 10) - -is_even <- function(x) { - x %% 2 == 0 -} -is_even(x = 11) -is_even(x = times_2(x = 10)) +div_100(x = 10) ``` @@ -79,35 +73,35 @@ is_even(x = times_2(x = 10)) If we want something specific for the function's output, we use `return()`: ```{r comment=""} -times_2_plus_4 <- function(x) { - output_int <- x * 2 +div_100_plus_4 <- function(x) { + output_int <- x / 100 output <- output_int + 4 return(output) } -times_2_plus_4(x = 10) +div_100_plus_4(x = 10) ``` -## Writing your own functions: print intermediate steps + - - printed results do not stay around but can show what a function is doing - - returned results stay around - - can only return one result but can print many - - if `return` not called, last evaluated expression is returned - - `return` should be the last step (steps after may be skipped) + + + + + -## Adding print + -```{r comment=""} -times_2_plus_4 <- function(x) { - output_int <- x * 2 - output <- output_int + 4 - print(paste("times2 result = ", output_int)) - return(output) -} + + + + + + + -result <- times_2_plus_4(x = 10) -result -``` + + + ## Writing your own functions: multiple inputs @@ -115,14 +109,14 @@ result Functions can take multiple inputs: ```{r comment=""} -times_2_plus_y <- function(x, y) x * 2 + y -times_2_plus_y(x = 10, y = 3) +div_100_plus_y <- function(x, y) x / 100 + y +div_100_plus_y(x = 10, y = 3) ``` ## Writing your own functions: multiple outputs -Functions can have one returned result with multiple outputs. +Functions can return a vector (or other object) with multiple outputs. ```{r comment=""} x_and_y_plus_2 <- function(x, y) { @@ -141,9 +135,9 @@ result Functions can have "default" arguments. This lets us use the function without using an argument later: ```{r comment=""} -times_2_plus_y <- function(x = 10, y = 3) x * 2 + y -times_2_plus_y() -times_2_plus_y(x = 11, y = 4) +div_100_plus_y <- function(x = 10, y = 3) x / 100 + y +div_100_plus_y() +div_100_plus_y(x = 11, y = 4) ``` @@ -182,47 +176,41 @@ loud(word = "hooray!") ``` -## Functions for tibbles + -We can use `filter(row_number() == n)` to extract a row of a tibble: + -```{r message=FALSE} -get_row <- function(dat, row) dat %>% filter(row_number() == row) + + -ces <- calenviroscreen -ces_1_8 <- ces %>% select(1:8) -``` + + + -```{r} -get_row(dat = ces, row = 10) -get_row(dat = ces, row = 4) -``` + + + + -## Functions for tibbles - -Can create function with an argument that allows inputting a column name for `select` or other `dplyr` operation: +## Functions for tibbles - curly braces{.codesmall} ```{r} -clean_dataset <- function(dataset, col_name) { - my_data_out <- dataset %>% select({{col_name}}) # Note the curly braces - return(my_data_out) +# get means and missing for a specific column +get_summary <- function(dataset, col_name) { + dataset %>% + summarise(mean = mean({{col_name}}, na.rm = TRUE), + na_count = sum(is.na({{col_name}}))) } - -clean_dataset(dataset = ces, col_name = "CES4.0Score") ``` -```{r} -get_mean <- function(dat, county_name, col_name) { - my_data_out <- dat %>% - filter(str_detect(CaliforniaCounty, county_name)) %>% - summarise(mean = mean({{col_name}}, na.rm = TRUE)) - return(my_data_out) -} -get_mean(dat = ces, county_name = "Alameda", col_name = CES4.0Score) -get_mean(dat = ces, county_name = "Fresno", col_name = CES4.0Score) +Examples: +```{r} +get_summary(calenviroscreen, CES4.0Score) +get_summary(haa5, perc_pop_exposed_to_exceedances) ``` + ## Summary - Simple functions take the form: @@ -251,6 +239,14 @@ These functions take the form: sapply(, some_function) ``` +## CalEnviroScreen + +This dataset was gathered by the California Office of Environmental Health Hazard Assessment. CalEnviroScreen ranks census tracts in California based on potential exposures to pollutants, adverse environmental conditions, socioeconomic factors and the prevalence of certain health conditions. Read more at https://calenviroscreen-oehha.hub.arcgis.com/. + +```{r} +head(calenviroscreen) +``` + ## Using your custom functions: `sapply()` @@ -259,29 +255,40 @@ sapply(, some_function) You can also pipe into your function. ```{r comment=""} -er_visits <- CO_heat_ER - -head(er_visits, n = 2) -sapply(er_visits, class) -er_visits %>% sapply(class) +sapply(calenviroscreen, class) # also: calenviroscreen %>% sapply(class) ``` ## Using your custom functions: `sapply()` +Use the `div_100` function we created earlier to convert 0-100 percentiles to proportions. + ```{r} -select(er_visits, rate:upper95cl) %>% head() -select(er_visits, rate:upper95cl) %>% - sapply(times_2) %>% +calenviroscreen %>% + select(ends_with("Pctl")) %>% + sapply(div_100) %>% head() ``` ## Using your custom functions "on the fly" to iterate +Also called "anonymous function". + +```{r comment=""} +calenviroscreen %>% + select(ends_with("Pctl")) %>% + sapply(function(x) x / 100) %>% + head() +``` + + +## Anonymous functions: alternative syntax + ```{r comment=""} -select(er_visits, rate:upper95cl) %>% - sapply(function(x) x / 1000) %>% +calenviroscreen %>% + select(ends_with("Pctl")) %>% + sapply(\(x) x / 100) %>% head() ``` @@ -292,11 +299,15 @@ select(er_visits, rate:upper95cl) %>% Already know how to use functions to modify columns using `mutate()` or calculate summary statistics using `summarize()`. +- Pesticides - pounds of selected active pesticide / square mile +- Poverty - percent of population living below two times the federal poverty level +- LowBirthWeight - Percent low birth weight + ```{r} -er_visits %>% - mutate(rate_round = round(rate, 2)) %>% - summarize(max_rate_round = max(rate_round, na.rm = T), - max_rate = max(rate, na.rm = T)) +calenviroscreen %>% + summarize(max_pest = max(Pesticides, na.rm = T), + max_pov = max(Poverty, na.rm = T), + low_bw = max(LowBirthWeight, na.rm = T)) ``` @@ -305,16 +316,16 @@ er_visits %>% `across()` makes it easy to apply the same transformation to multiple columns. Usually used with `summarize()` or `mutate()`. ``` -summarize(across( .cols = , .fns = function)) +summarize(across(,function)) ``` or ``` -mutate(across(.cols = , .fns = function)) +mutate(across(,function)) ``` - List columns first : `.cols = ` - List function next: `.fns = ` -- If there are arguments to a function (e.g., `na.rm = TRUE`), the function may need to be modified to an anonymous function, e.g., `\(x) mean(x, na.rm = TRUE)` +- If there are arguments to a function (e.g., `na.rm = TRUE`), use an anonymous function. ## Applying functions with `across` from `dplyr` @@ -322,31 +333,36 @@ mutate(across(.cols = , .fns = function)) Combining with `summarize()` ```{r warning=FALSE} -ces_dbl <- ces %>% select(CaliforniaCounty, CES4.0Score, CES4.0Percentile) - -ces_dbl %>% - summarize(across(.cols = everything(), .fns = mean, na.rm=T)) +calenviroscreen %>% + summarize(across( + c(Pesticides, Poverty, LowBirthWeight), + mean # no parentheses + )) ``` ## Applying functions with `across` from `dplyr` -Can use with other tidyverse functions like `group_by`! +Add anonymous function to include additional arguments (e.g., `na.rm = T`). -```{r} -ces_dbl %>% - group_by(CaliforniaCounty) %>% - summarize(across(.cols = everything(), .fns = mean, na.rm=T)) +```{r warning=FALSE} +calenviroscreen %>% + summarize(across( + c(Pesticides, Poverty, LowBirthWeight), + function(x) mean(x, na.rm = T) + )) ``` - ## Applying functions with `across` from `dplyr` -To add arguments to functions, may need to use anonymous function. In this syntax, the shorthand `\(x)` is equivalent to `function(x)`. +Can use with other tidyverse functions like `group_by`! -```{r warning=FALSE} -ces_dbl %>% - group_by(CaliforniaCounty) %>% - summarize(across(.cols = everything(), .fns = \(x) mean(x, na.rm = TRUE))) +```{r} +calenviroscreen %>% + group_by(CaliforniaCounty) %>% + summarize(across( + c(Pesticides, Poverty, LowBirthWeight), + function(x) mean(x, na.rm = T) + )) ``` @@ -355,24 +371,23 @@ ces_dbl %>% Using different `tidyselect()` options (e.g., `starts_with()`, `ends_with()`, `contains()`) ```{r warning=FALSE} -ces_dbl %>% +calenviroscreen %>% group_by(CaliforniaCounty) %>% - summarize(across(.cols = contains("Perc"), .fns = mean)) + summarize(across(contains("PM"), mean)) ``` -## Applying functions with `across` from `dplyr` + -Combining with `mutate()`: rounding to the nearest power of 10 (with negative digits value) + -```{r} -ces_dbl %>% - mutate(across( - .cols = starts_with("CES"), - .fns = round, - digits = 3 - )) -``` + + + + + + + ## Applying functions with `across` from `dplyr` {.smaller} @@ -389,34 +404,33 @@ or yearly_co2_emissions %>% select(country, starts_with("194")) %>% mutate(across( - .cols = c(`1943`, `1944`, `1945`), - .fns = replace_na, - replace = 0 + c(`1943`, `1944`, `1945`), + function(x) replace_na(x, replace = 0) )) ``` -## Use custom functions within `mutate` and `across` + -If your function needs to span more than one line, better to define it first before using inside `mutate()` and `across()`. + -```{r} -times1000 <- function(x) x * 1000 + + -airquality %>% - mutate(across( - .cols = everything(), - .fns = times1000 - )) %>% - head(n = 2) + + + + + + -airquality %>% - mutate(across( - .cols = everything(), - .fns = function(x) x * 1000 - )) %>% - head(n = 2) -``` + + + + + + + ## `purrr` package diff --git a/modules/Functions/Functions.html b/modules/Functions/Functions.html index 31ea37b6..95011261 100644 --- a/modules/Functions/Functions.html +++ b/modules/Functions/Functions.html @@ -3284,88 +3284,84 @@

Here we will write a function that multiplies some number x by 2:

-
times_2 <- function(x) x * 2
+
div_100 <- function(x) x / 100

When you run the line of code above, you make it ready to use (no output yet!). Let’s test it!

-
times_2(x = 10)
+
div_100(x = 600)
-
[1] 20
+
[1] 6

Writing your own functions: { }

Adding the curly brackets - {} - allows you to use functions spanning multiple lines:

-
times_2 <- function(x) {
-  x * 2
+
div_100 <- function(x) {
+  x / 100
 }
-times_2(x = 10)
+div_100(x = 10)
-
[1] 20
- -
is_even <- function(x) {
-  x %% 2 == 0
-}
-is_even(x = 11)
- -
[1] FALSE
- -
is_even(x = times_2(x = 10))
- -
[1] TRUE
+
[1] 0.1

Writing your own functions: return

If we want something specific for the function’s output, we use return():

-
times_2_plus_4 <- function(x) {
-  output_int <- x * 2
+
div_100_plus_4 <- function(x) {
+  output_int <- x / 100
   output <- output_int + 4
   return(output)
 }
-times_2_plus_4(x = 10)
+div_100_plus_4(x = 10)
-
[1] 24
+
[1] 4.1
-

Writing your own functions: print intermediate steps

+ -
    -
  • printed results do not stay around but can show what a function is doing
  • -
  • returned results stay around
  • -
  • can only return one result but can print many
  • -
  • if return not called, last evaluated expression is returned
  • -
  • return should be the last step (steps after may be skipped)
  • -
+ -

Adding print

+ -
times_2_plus_4 <- function(x) {
-  output_int <- x * 2
-  output <- output_int + 4
-  print(paste("times2 result = ", output_int))
-  return(output)
-}
+
+
+
+
+
+
+
 
-result <- times_2_plus_4(x = 10)
+ -
[1] "times2 result =  20"
+ -
result
+ -
[1] 24
+ + + + + + + + + + + + +

Writing your own functions: multiple inputs

Functions can take multiple inputs:

-
times_2_plus_y <- function(x, y) x * 2 + y
-times_2_plus_y(x = 10, y = 3)
+
div_100_plus_y <- function(x, y) x / 100 + y
+div_100_plus_y(x = 10, y = 3)
-
[1] 23
+
[1] 3.1

Writing your own functions: multiple outputs

-

Functions can have one returned result with multiple outputs.

+

Functions can return a vector (or other object) with multiple outputs.

x_and_y_plus_2 <- function(x, y) {
   output1 <- x + 2
@@ -3382,14 +3378,14 @@ 

Functions can have “default” arguments. This lets us use the function without using an argument later:

-
times_2_plus_y <- function(x = 10, y = 3) x * 2 + y
-times_2_plus_y()
+
div_100_plus_y <- function(x = 10, y = 3) x / 100 + y
+div_100_plus_y()
-
[1] 23
+
[1] 3.1
-
times_2_plus_y(x = 11, y = 4)
+
div_100_plus_y(x = 11, y = 4)
-
[1] 26
+
[1] 4.11

Writing another simple function

@@ -3434,89 +3430,52 @@

[1] "HOORAY!" "HOORAY!" "HOORAY!" "HOORAY!" "HOORAY!"
-

Functions for tibbles

+ -

We can use filter(row_number() == n) to extract a row of a tibble:

+ -
get_row <- function(dat, row) dat %>% filter(row_number() == row)
+
 
-ces <- calenviroscreen
-ces_1_8 <- ces %>% select(1:8)
+ -
get_row(dat = ces, row = 10)
+ -
# A tibble: 1 × 67
-  CensusTract CaliforniaCounty   ZIP Longitude Latitude ApproxLocation
-        <dbl> <chr>            <int>     <dbl>    <dbl> <chr>         
-1  6001401000 "Alameda "       94608     -122.     37.8 Oakland       
-# ℹ 61 more variables: CES4.0Score <dbl>, CES4.0Percentile <dbl>,
-#   CES4.0PercRange <chr>, Ozone <dbl>, OzonePctl <dbl>, PM2.5 <dbl>,
-#   PM2.5.Pctl <dbl>, DieselPM <dbl>, DieselPMPctl <dbl>, DrinkingWater <dbl>,
-#   DrinkingWaterPctl <dbl>, Lead <dbl>, LeadPctl <dbl>, Pesticides <dbl>,
-#   PesticidesPctl <dbl>, ToxRelease <dbl>, ToxReleasePctl <dbl>,
-#   Traffic <dbl>, TrafficPctl <dbl>, CleanupSites <dbl>,
-#   CleanupSitesPctl <dbl>, GroundwaterThreats <dbl>, …
+ -
get_row(dat = ces, row = 4)
+ -
# A tibble: 1 × 67
-  CensusTract CaliforniaCounty   ZIP Longitude Latitude ApproxLocation
-        <dbl> <chr>            <int>     <dbl>    <dbl> <chr>         
-1  6001400400 "Alameda "       94609     -122.     37.8 Oakland       
-# ℹ 61 more variables: CES4.0Score <dbl>, CES4.0Percentile <dbl>,
-#   CES4.0PercRange <chr>, Ozone <dbl>, OzonePctl <dbl>, PM2.5 <dbl>,
-#   PM2.5.Pctl <dbl>, DieselPM <dbl>, DieselPMPctl <dbl>, DrinkingWater <dbl>,
-#   DrinkingWaterPctl <dbl>, Lead <dbl>, LeadPctl <dbl>, Pesticides <dbl>,
-#   PesticidesPctl <dbl>, ToxRelease <dbl>, ToxReleasePctl <dbl>,
-#   Traffic <dbl>, TrafficPctl <dbl>, CleanupSites <dbl>,
-#   CleanupSitesPctl <dbl>, GroundwaterThreats <dbl>, …
+ -

Functions for tibbles

+ -

Can create function with an argument that allows inputting a column name for select or other dplyr operation:

+ -
clean_dataset <- function(dataset, col_name) {
-  my_data_out <- dataset %>% select({{col_name}}) # Note the curly braces
-  return(my_data_out)
-}
+
 
-clean_dataset(dataset = ces, col_name = "CES4.0Score")
+

Functions for tibbles - curly braces

-
# A tibble: 8,035 × 1
-   CES4.0Score
-         <dbl>
- 1        4.85
- 2        4.88
- 3       11.2 
- 4       12.4 
- 5       16.7 
- 6       20.0 
- 7       36.7 
- 8       37.1 
- 9       40.7 
-10       43.7 
-# ℹ 8,025 more rows
+
# get means and missing for a specific column
+get_summary <- function(dataset, col_name) {
+    dataset %>%  
+    summarise(mean = mean({{col_name}}, na.rm = TRUE),
+              na_count = sum(is.na({{col_name}})))
+}
-
get_mean <- function(dat, county_name, col_name) {
-  my_data_out <- dat %>% 
-    filter(str_detect(CaliforniaCounty, county_name)) %>%  
-    summarise(mean = mean({{col_name}}, na.rm = TRUE))
-    return(my_data_out)
-}
+

Examples:

-get_mean(dat = ces, county_name = "Alameda", col_name = CES4.0Score)
+
get_summary(calenviroscreen, CES4.0Score)
-
# A tibble: 1 × 1
-   mean
-  <dbl>
-1  22.9
+
# A tibble: 1 × 2
+   mean na_count
+  <dbl>    <int>
+1  28.3      103
-
get_mean(dat = ces, county_name = "Fresno", col_name = CES4.0Score)
+
get_summary(haa5, perc_pop_exposed_to_exceedances)
-
# A tibble: 1 × 1
-   mean
-  <dbl>
-1  40.9
+
# A tibble: 1 × 2
+    mean na_count
+   <dbl>    <int>
+1 0.0591       11

Summary

@@ -3546,75 +3505,237 @@

sapply(<a vector, list, data frame>, some_function)
-

Using your custom functions: sapply()

- -

🚨 There are no parentheses on the functions! 🚨

- -

You can also pipe into your function.

+

CalEnviroScreen

-
er_visits <- CO_heat_ER
+

This dataset was gathered by the California Office of Environmental Health Hazard Assessment. CalEnviroScreen ranks census tracts in California based on potential exposures to pollutants, adverse environmental conditions, socioeconomic factors and the prevalence of certain health conditions. Read more at https://calenviroscreen-oehha.hub.arcgis.com/.

-head(er_visits, n = 2)
+
head(calenviroscreen)
-
# A tibble: 2 × 7
-  county     rate lower95cl upper95cl visits  year gender
-  <chr>     <dbl>     <dbl>     <dbl>  <dbl> <dbl> <chr> 
-1 Statewide  5.64      4.70      6.59    140  2011 Female
-2 Statewide  7.39      6.30      8.47    183  2011 Male  
+
# A tibble: 6 × 67
+  CensusTract CaliforniaCounty   ZIP Longitude Latitude ApproxLocation
+        <dbl> <chr>            <int>     <dbl>    <dbl> <chr>         
+1  6001400100 "Alameda "       94704     -122.     37.9 Oakland       
+2  6001400200 "Alameda "       94618     -122.     37.8 Oakland       
+3  6001400300 "Alameda "       94618     -122.     37.8 Oakland       
+4  6001400400 "Alameda "       94609     -122.     37.8 Oakland       
+5  6001400500 "Alameda "       94609     -122.     37.8 Oakland       
+6  6001400600 "Alameda "       94609     -122.     37.8 Oakland       
+# ℹ 61 more variables: CES4.0Score <dbl>, CES4.0Percentile <dbl>,
+#   CES4.0PercRange <chr>, Ozone <dbl>, OzonePctl <dbl>, PM2.5 <dbl>,
+#   PM2.5.Pctl <dbl>, DieselPM <dbl>, DieselPMPctl <dbl>, DrinkingWater <dbl>,
+#   DrinkingWaterPctl <dbl>, Lead <dbl>, LeadPctl <dbl>, Pesticides <dbl>,
+#   PesticidesPctl <dbl>, ToxRelease <dbl>, ToxReleasePctl <dbl>,
+#   Traffic <dbl>, TrafficPctl <dbl>, CleanupSites <dbl>,
+#   CleanupSitesPctl <dbl>, GroundwaterThreats <dbl>, …
-
sapply(er_visits, class)
+

Using your custom functions: sapply()

-
     county        rate   lower95cl   upper95cl      visits        year 
-"character"   "numeric"   "numeric"   "numeric"   "numeric"   "numeric" 
-     gender 
-"character" 
+

🚨 There are no parentheses on the functions! 🚨

-
er_visits %>% sapply(class)
+

You can also pipe into your function.

-
     county        rate   lower95cl   upper95cl      visits        year 
-"character"   "numeric"   "numeric"   "numeric"   "numeric"   "numeric" 
-     gender 
-"character" 
+
sapply(calenviroscreen, class) # also: calenviroscreen %>% sapply(class)
+ +
              CensusTract          CaliforniaCounty                       ZIP 
+                "numeric"               "character"                 "integer" 
+                Longitude                  Latitude            ApproxLocation 
+                "numeric"                 "numeric"               "character" 
+              CES4.0Score          CES4.0Percentile           CES4.0PercRange 
+                "numeric"                 "numeric"               "character" 
+                    Ozone                 OzonePctl                     PM2.5 
+                "numeric"                 "numeric"                 "numeric" 
+               PM2.5.Pctl                  DieselPM              DieselPMPctl 
+                "numeric"                 "numeric"                 "numeric" 
+            DrinkingWater         DrinkingWaterPctl                      Lead 
+                "numeric"                 "numeric"                 "numeric" 
+                 LeadPctl                Pesticides            PesticidesPctl 
+                "numeric"                 "numeric"                 "numeric" 
+               ToxRelease            ToxReleasePctl                   Traffic 
+                "numeric"                 "numeric"                 "numeric" 
+              TrafficPctl              CleanupSites          CleanupSitesPctl 
+                "numeric"                 "numeric"                 "numeric" 
+       GroundwaterThreats    GroundwaterThreatsPctl                  HazWaste 
+                "numeric"                 "numeric"                 "numeric" 
+             HazWastePctl            ImpWaterBodies        ImpWaterBodiesPctl 
+                "numeric"                 "integer"                 "numeric" 
+               SolidWaste            SolidWastePctl           PollutionBurden 
+                "numeric"                 "numeric"                 "numeric" 
+     PollutionBurdenScore       PollutionBurdenPctl                    Asthma 
+                "numeric"                 "numeric"                 "numeric" 
+               AsthmaPctl            LowBirthWeight        LowBirthWeightPctl 
+                "numeric"                 "numeric"                 "numeric" 
+    CardiovascularDisease CardiovascularDiseasePctl                  TotalPop 
+                "numeric"                 "numeric"                 "integer" 
+       ChildrenPercLess10             PopPerc10to64             ElderlyMore64 
+                "numeric"                 "numeric"                 "numeric" 
+             HispanicPerc                 WhitePerc            AfAmericanPerc 
+                "numeric"                 "numeric"                 "numeric" 
+       NativeAmericanPerc         AsianAmericanPerc         OtherMultiplePerc 
+                "numeric"                 "numeric"                 "numeric" 
+                  PopChar              PopCharScore               PopCharPctl 
+                "numeric"                 "numeric"                 "numeric" 
+                Education             EducationPctl            LinguisticIsol 
+                "numeric"                 "numeric"                 "numeric" 
+       LinguisticIsolPctl                   Poverty               PovertyPctl 
+                "numeric"                 "numeric"                 "numeric" 
+             Unemployment          UnemploymentPctl             HousingBurden 
+                "numeric"                 "numeric"                 "numeric" 
+        HousingBurdenPctl 
+                "numeric" 

Using your custom functions: sapply()

-
select(er_visits, rate:upper95cl) %>% head()
- -
# A tibble: 6 × 3
-   rate lower95cl upper95cl
-  <dbl>     <dbl>     <dbl>
-1  5.64      4.70      6.59
-2  7.39      6.30      8.47
-3  6.51      5.80      7.23
-4  5.64      4.72      6.57
-5  7.56      6.48      8.65
-6  6.58      5.88      7.29
+

Use the div_100 function we created earlier to convert 0-100 percentiles to proportions.

-
select(er_visits, rate:upper95cl) %>%
-  sapply(times_2) %>%
+
calenviroscreen %>%
+  select(ends_with("Pctl")) %>%
+  sapply(div_100) %>%
   head()
-
         rate lower95cl upper95cl
-[1,] 11.28546  9.395283  13.17564
-[2,] 14.77374 12.597645  16.94983
-[3,] 13.02989 11.593179  14.46660
-[4,] 11.28268  9.430621  13.13474
-[5,] 15.12880 12.959418  17.29817
-[6,] 13.16714 11.750214  14.58407
+
     OzonePctl PM2.5.Pctl DieselPMPctl DrinkingWaterPctl LeadPctl
+[1,]    0.0312     0.3627       0.3476            0.0421   0.0774
+[2,]    0.0312     0.4197       0.9271            0.0421   0.6820
+[3,]    0.0312     0.4390       0.8977            0.0421   0.6418
+[4,]    0.0312     0.4281       0.7910            0.0421   0.6708
+[5,]    0.0312     0.4281       0.6758            0.0421   0.6795
+[6,]    0.0312     0.4281       0.8376            0.0421   0.6970
+     PesticidesPctl ToxReleasePctl TrafficPctl CleanupSitesPctl
+[1,]              0         0.5603      0.5594           0.5817
+[2,]              0         0.5543      0.3749           0.0000
+[3,]              0         0.5504      0.4248           0.1183
+[4,]              0         0.5590      0.3800           0.0000
+[5,]              0         0.5648      0.4868           0.3387
+[6,]              0         0.5565      0.6706           0.2262
+     GroundwaterThreatsPctl HazWastePctl ImpWaterBodiesPctl SolidWastePctl
+[1,]                 0.5242       0.9252             0.2388         0.3572
+[2,]                 0.8793       0.2851             0.0000         0.0000
+[3,]                 0.8529       0.7407             0.0000         0.0000
+[4,]                 0.9256       0.5189             0.0000         0.0000
+[5,]                 0.8434       0.5640             0.0000         0.0000
+[6,]                 0.7906       0.5827             0.0000         0.0000
+     PollutionBurdenPctl AsthmaPctl LowBirthWeightPctl
+[1,]              0.2662     0.0444             0.2306
+[2,]              0.2418     0.0980             0.2792
+[3,]              0.3337     0.2657             0.2162
+[4,]              0.2624     0.5598             0.3702
+[5,]              0.3140     0.8838             0.1900
+[6,]              0.3694     0.9307             0.0503
+     CardiovascularDiseasePctl PopCharPctl EducationPctl LinguisticIsolPctl
+[1,]                    0.0142      0.0153        0.1255             0.0849
+[2,]                    0.1453      0.0165        0.0042             0.0000
+[3,]                    0.2011      0.1227        0.2412             0.5336
+[4,]                    0.1428      0.1843        0.2029             0.0564
+[5,]                    0.3887      0.3016        0.0740             0.1330
+[6,]                    0.5278      0.3770        0.0973             0.0627
+     PovertyPctl UnemploymentPctl HousingBurdenPctl
+[1,]      0.1103               NA            0.1939
+[2,]      0.1144           0.1711            0.0067
+[3,]      0.1090           0.2941            0.0981
+[4,]      0.3642           0.1066            0.3748
+[5,]      0.3813           0.2820            0.3748
+[6,]      0.2442           0.7167            0.5407

Using your custom functions “on the fly” to iterate

-
select(er_visits, rate:upper95cl) %>%
-  sapply(function(x) x / 1000) %>%
+

Also called “anonymous function”.

+ +
calenviroscreen %>%
+  select(ends_with("Pctl")) %>%
+  sapply(function(x) x / 100) %>%
   head()
-
            rate   lower95cl   upper95cl
-[1,] 0.005642730 0.004697642 0.006587819
-[2,] 0.007386868 0.006298822 0.008474914
-[3,] 0.006514945 0.005796590 0.007233300
-[4,] 0.005641341 0.004715311 0.006567371
-[5,] 0.007564398 0.006479709 0.008649086
-[6,] 0.006583570 0.005875107 0.007292033
+
     OzonePctl PM2.5.Pctl DieselPMPctl DrinkingWaterPctl LeadPctl
+[1,]    0.0312     0.3627       0.3476            0.0421   0.0774
+[2,]    0.0312     0.4197       0.9271            0.0421   0.6820
+[3,]    0.0312     0.4390       0.8977            0.0421   0.6418
+[4,]    0.0312     0.4281       0.7910            0.0421   0.6708
+[5,]    0.0312     0.4281       0.6758            0.0421   0.6795
+[6,]    0.0312     0.4281       0.8376            0.0421   0.6970
+     PesticidesPctl ToxReleasePctl TrafficPctl CleanupSitesPctl
+[1,]              0         0.5603      0.5594           0.5817
+[2,]              0         0.5543      0.3749           0.0000
+[3,]              0         0.5504      0.4248           0.1183
+[4,]              0         0.5590      0.3800           0.0000
+[5,]              0         0.5648      0.4868           0.3387
+[6,]              0         0.5565      0.6706           0.2262
+     GroundwaterThreatsPctl HazWastePctl ImpWaterBodiesPctl SolidWastePctl
+[1,]                 0.5242       0.9252             0.2388         0.3572
+[2,]                 0.8793       0.2851             0.0000         0.0000
+[3,]                 0.8529       0.7407             0.0000         0.0000
+[4,]                 0.9256       0.5189             0.0000         0.0000
+[5,]                 0.8434       0.5640             0.0000         0.0000
+[6,]                 0.7906       0.5827             0.0000         0.0000
+     PollutionBurdenPctl AsthmaPctl LowBirthWeightPctl
+[1,]              0.2662     0.0444             0.2306
+[2,]              0.2418     0.0980             0.2792
+[3,]              0.3337     0.2657             0.2162
+[4,]              0.2624     0.5598             0.3702
+[5,]              0.3140     0.8838             0.1900
+[6,]              0.3694     0.9307             0.0503
+     CardiovascularDiseasePctl PopCharPctl EducationPctl LinguisticIsolPctl
+[1,]                    0.0142      0.0153        0.1255             0.0849
+[2,]                    0.1453      0.0165        0.0042             0.0000
+[3,]                    0.2011      0.1227        0.2412             0.5336
+[4,]                    0.1428      0.1843        0.2029             0.0564
+[5,]                    0.3887      0.3016        0.0740             0.1330
+[6,]                    0.5278      0.3770        0.0973             0.0627
+     PovertyPctl UnemploymentPctl HousingBurdenPctl
+[1,]      0.1103               NA            0.1939
+[2,]      0.1144           0.1711            0.0067
+[3,]      0.1090           0.2941            0.0981
+[4,]      0.3642           0.1066            0.3748
+[5,]      0.3813           0.2820            0.3748
+[6,]      0.2442           0.7167            0.5407
+ +

Anonymous functions: alternative syntax

+ +
calenviroscreen %>%
+  select(ends_with("Pctl")) %>%
+  sapply(\(x) x / 100) %>%
+  head()
+ +
     OzonePctl PM2.5.Pctl DieselPMPctl DrinkingWaterPctl LeadPctl
+[1,]    0.0312     0.3627       0.3476            0.0421   0.0774
+[2,]    0.0312     0.4197       0.9271            0.0421   0.6820
+[3,]    0.0312     0.4390       0.8977            0.0421   0.6418
+[4,]    0.0312     0.4281       0.7910            0.0421   0.6708
+[5,]    0.0312     0.4281       0.6758            0.0421   0.6795
+[6,]    0.0312     0.4281       0.8376            0.0421   0.6970
+     PesticidesPctl ToxReleasePctl TrafficPctl CleanupSitesPctl
+[1,]              0         0.5603      0.5594           0.5817
+[2,]              0         0.5543      0.3749           0.0000
+[3,]              0         0.5504      0.4248           0.1183
+[4,]              0         0.5590      0.3800           0.0000
+[5,]              0         0.5648      0.4868           0.3387
+[6,]              0         0.5565      0.6706           0.2262
+     GroundwaterThreatsPctl HazWastePctl ImpWaterBodiesPctl SolidWastePctl
+[1,]                 0.5242       0.9252             0.2388         0.3572
+[2,]                 0.8793       0.2851             0.0000         0.0000
+[3,]                 0.8529       0.7407             0.0000         0.0000
+[4,]                 0.9256       0.5189             0.0000         0.0000
+[5,]                 0.8434       0.5640             0.0000         0.0000
+[6,]                 0.7906       0.5827             0.0000         0.0000
+     PollutionBurdenPctl AsthmaPctl LowBirthWeightPctl
+[1,]              0.2662     0.0444             0.2306
+[2,]              0.2418     0.0980             0.2792
+[3,]              0.3337     0.2657             0.2162
+[4,]              0.2624     0.5598             0.3702
+[5,]              0.3140     0.8838             0.1900
+[6,]              0.3694     0.9307             0.0503
+     CardiovascularDiseasePctl PopCharPctl EducationPctl LinguisticIsolPctl
+[1,]                    0.0142      0.0153        0.1255             0.0849
+[2,]                    0.1453      0.0165        0.0042             0.0000
+[3,]                    0.2011      0.1227        0.2412             0.5336
+[4,]                    0.1428      0.1843        0.2029             0.0564
+[5,]                    0.3887      0.3016        0.0740             0.1330
+[6,]                    0.5278      0.3770        0.0973             0.0627
+     PovertyPctl UnemploymentPctl HousingBurdenPctl
+[1,]      0.1103               NA            0.1939
+[2,]      0.1144           0.1711            0.0067
+[3,]      0.1090           0.2941            0.0981
+[4,]      0.3642           0.1066            0.3748
+[5,]      0.3813           0.2820            0.3748
+[6,]      0.2442           0.7167            0.5407

across

@@ -3622,142 +3743,136 @@

Already know how to use functions to modify columns using mutate() or calculate summary statistics using summarize().

-
er_visits %>%
-  mutate(rate_round = round(rate, 2)) %>%
-  summarize(max_rate_round = max(rate_round, na.rm = T),
-            max_rate = max(rate, na.rm = T))
+ -
# A tibble: 1 × 2
-  max_rate_round max_rate
-           <dbl>    <dbl>
-1           89.3     89.3
+
calenviroscreen %>%
+  summarize(max_pest = max(Pesticides, na.rm = T),
+            max_pov = max(Poverty, na.rm = T),
+            low_bw = max(LowBirthWeight, na.rm = T))
+ +
# A tibble: 1 × 3
+  max_pest max_pov low_bw
+     <dbl>   <dbl>  <dbl>
+1   80811.    96.7   13.7

Applying functions with across from dplyr

across() makes it easy to apply the same transformation to multiple columns. Usually used with summarize() or mutate().

-
summarize(across( .cols = <columns>, .fns = function)) 
+
summarize(across(<columns>,function)) 

or

-
mutate(across(.cols = <columns>, .fns = function))
+
mutate(across(<columns>,function))

Applying functions with across from dplyr

Combining with summarize()

-
ces_dbl <- ces %>% select(CaliforniaCounty, CES4.0Score, CES4.0Percentile)
-
-ces_dbl %>%
-  summarize(across(.cols = everything(), .fns = mean, na.rm=T))
+
calenviroscreen %>%
+  summarize(across(
+    c(Pesticides, Poverty, LowBirthWeight),
+    mean # no parentheses
+  ))
# A tibble: 1 × 3
-  CaliforniaCounty CES4.0Score CES4.0Percentile
-             <dbl>       <dbl>            <dbl>
-1               NA        28.3             50.0
+ Pesticides Poverty LowBirthWeight + <dbl> <dbl> <dbl> +1 268. NA NA

Applying functions with across from dplyr

-

Can use with other tidyverse functions like group_by!

+

Add anonymous function to include additional arguments (e.g., na.rm = T).

-
ces_dbl %>%
-  group_by(CaliforniaCounty) %>%
-  summarize(across(.cols = everything(), .fns = mean, na.rm=T))
- -
# A tibble: 58 × 3
-   CaliforniaCounty CES4.0Score CES4.0Percentile
-   <chr>                  <dbl>            <dbl>
- 1 "Alameda "              22.9             41.3
- 2 "Alpine "               13.6             22  
- 3 "Amador "               20.7             38.8
- 4 "Butte "                21.7             39.8
- 5 "Calaveras "            16.1             28.0
- 6 "Colusa "               27.0             52.2
- 7 "Contra Costa"          21.0             36.7
- 8 "Del Norte"             21.4             40.3
- 9 "El Dorado"             10.2             14.6
-10 "Fresno "               40.9             69.5
-# ℹ 48 more rows
+
calenviroscreen %>%
+  summarize(across(
+    c(Pesticides, Poverty, LowBirthWeight),
+    function(x) mean(x, na.rm = T)
+  ))
+ +
# A tibble: 1 × 3
+  Pesticides Poverty LowBirthWeight
+       <dbl>   <dbl>          <dbl>
+1       268.    31.3           5.00

Applying functions with across from dplyr

-

To add arguments to functions, may need to use anonymous function. In this syntax, the shorthand \(x) is equivalent to function(x).

+

Can use with other tidyverse functions like group_by!

-
ces_dbl %>%
-  group_by(CaliforniaCounty) %>%
-  summarize(across(.cols = everything(), .fns = \(x) mean(x, na.rm = TRUE)))
- -
# A tibble: 58 × 3
-   CaliforniaCounty CES4.0Score CES4.0Percentile
-   <chr>                  <dbl>            <dbl>
- 1 "Alameda "              22.9             41.3
- 2 "Alpine "               13.6             22  
- 3 "Amador "               20.7             38.8
- 4 "Butte "                21.7             39.8
- 5 "Calaveras "            16.1             28.0
- 6 "Colusa "               27.0             52.2
- 7 "Contra Costa"          21.0             36.7
- 8 "Del Norte"             21.4             40.3
- 9 "El Dorado"             10.2             14.6
-10 "Fresno "               40.9             69.5
+
calenviroscreen %>%
+  group_by(CaliforniaCounty) %>% 
+  summarize(across(
+    c(Pesticides, Poverty, LowBirthWeight),
+    function(x) mean(x, na.rm = T)
+  ))
+ +
# A tibble: 58 × 4
+   CaliforniaCounty Pesticides Poverty LowBirthWeight
+   <chr>                 <dbl>   <dbl>          <dbl>
+ 1 "Alameda "            0.948    22.1           5.26
+ 2 "Alpine "             0        38.9         NaN   
+ 3 "Amador "             2.01     25.2           4.45
+ 4 "Butte "            736.       39.9           4.64
+ 5 "Calaveras "          1.20     28.2           3.55
+ 6 "Colusa "          1186.       36.5           4.11
+ 7 "Contra Costa"       10.5      20.6           4.71
+ 8 "Del Norte"          47.4      48.4         NaN   
+ 9 "El Dorado"           5.50     20.9           4.28
+10 "Fresno "           586.       45.8           5.96
 # ℹ 48 more rows

Applying functions with across from dplyr

Using different tidyselect() options (e.g., starts_with(), ends_with(), contains())

-
ces_dbl %>%
+
calenviroscreen %>% 
   group_by(CaliforniaCounty) %>%
-  summarize(across(.cols = contains("Perc"), .fns = mean))
- -
# A tibble: 58 × 2
-   CaliforniaCounty CES4.0Percentile
-   <chr>                       <dbl>
- 1 "Alameda "                   NA  
- 2 "Alpine "                    22  
- 3 "Amador "                    38.8
- 4 "Butte "                     39.8
- 5 "Calaveras "                 NA  
- 6 "Colusa "                    52.2
- 7 "Contra Costa"               36.7
- 8 "Del Norte"                  40.3
- 9 "El Dorado"                  14.6
-10 "Fresno "                    NA  
+  summarize(across(contains("PM"), mean))
+ +
# A tibble: 58 × 5
+   CaliforniaCounty PM2.5 PM2.5.Pctl DieselPM DieselPMPctl
+   <chr>            <dbl>      <dbl>    <dbl>        <dbl>
+ 1 "Alameda "        8.87      31.9    0.350         66.4 
+ 2 "Alpine "         3.05       0.07   0.003          1.02
+ 3 "Amador "         8.01      18.9    0.0111         4.18
+ 4 "Butte "          8.22      23.0    0.106         33.1 
+ 5 "Calaveras "      8.12      22.6    0.0079         3.08
+ 6 "Colusa "         7.54      13.3    0.0292        10.6 
+ 7 "Contra Costa"    8.76      31.0    0.210         48.6 
+ 8 "Del Norte"       5.71       2.93   0.0301        11.1 
+ 9 "El Dorado"       6.78       8.91   0.0380        13.6 
+10 "Fresno "        13.2       91.4    0.181         44.8 
 # ℹ 48 more rows
-

Applying functions with across from dplyr

+ -

Combining with mutate(): rounding to the nearest power of 10 (with negative digits value)

+ -
ces_dbl %>%
-  mutate(across(
-    .cols = starts_with("CES"),
-    .fns = round,
-    digits = 3
-  ))
+ + + -
# A tibble: 8,035 × 3
-   CaliforniaCounty CES4.0Score CES4.0Percentile
-   <chr>                  <dbl>            <dbl>
- 1 "Alameda "              4.85             2.8 
- 2 "Alameda "              4.88             2.87
- 3 "Alameda "             11.2             15.9 
- 4 "Alameda "             12.4             19.0 
- 5 "Alameda "             16.7             29.7 
- 6 "Alameda "             20.0             37.6 
- 7 "Alameda "             36.7             70.1 
- 8 "Alameda "             37.1             70.7 
- 9 "Alameda "             40.7             76.2 
-10 "Alameda "             43.7             80.4 
-# ℹ 8,025 more rows
- -

Applying functions with across from dplyr

+ + + + + + + + + + +

Applying functions with across from dplyr

Combining with mutate() - the replace_na function

@@ -3768,9 +3883,8 @@

yearly_co2_emissions %>%
   select(country, starts_with("194")) %>%
   mutate(across(
-    .cols = c(`1943`, `1944`, `1945`),
-    .fns = replace_na,
-    replace = 0
+    c(`1943`, `1944`, `1945`),
+    function(x) replace_na(x, replace = 0)
   ))
# A tibble: 192 × 11
@@ -3789,33 +3903,39 @@ 

# ℹ 182 more rows # ℹ 1 more variable: `1949` <dbl>
-

Use custom functions within mutate and across

+ -

If your function needs to span more than one line, better to define it first before using inside mutate() and across().

+ -
times1000 <- function(x) x * 1000
+
 
-airquality %>%
-  mutate(across(
-    .cols = everything(),
-    .fns  = times1000
-  )) %>%
-  head(n = 2)
+ -
  Ozone Solar.R Wind  Temp Month  Day
-1 41000  190000 7400 67000  5000 1000
-2 36000  118000 8000 72000  5000 2000
+ -
airquality %>%
-  mutate(across(
-    .cols = everything(),
-    .fns  = function(x) x * 1000
-  )) %>%
-  head(n = 2)
- -
  Ozone Solar.R Wind  Temp Month  Day
-1 41000  190000 7400 67000  5000 1000
-2 36000  118000 8000 72000  5000 2000
+ + + + + + + + + + + + + + + + + + + + + + +

purrr package

diff --git a/modules/Functions/Functions.pdf b/modules/Functions/Functions.pdf index d460868c..a27d537e 100644 Binary files a/modules/Functions/Functions.pdf and b/modules/Functions/Functions.pdf differ diff --git a/modules/Functions/clean_data.csv b/modules/Functions/clean_data.csv deleted file mode 100644 index fb914f39..00000000 --- a/modules/Functions/clean_data.csv +++ /dev/null @@ -1,8036 +0,0 @@ -CES4.0Score -4.85 -4.88 -11.2 -12.39 -16.73 -20.02 -36.71 -37.1 -40.71 -43.74 -32.93 -20.25 -43.68 -45.08 -44.53 -48.78 -43.47 -45.1 -55.82 -37.31 -50.81 -42.12 -38.87 -41.72 -36.39 -53.41 -35.96 -45.88 -29.43 -25.31 -19.87 -25.58 -14.1 -14.98 -11.72 -16 -8.89 -9.35 -12.92 -7.3 -3.82 -4.57 -4.59 -6.27 -4.69 -4.7 -14.33 -15.34 -7.42 -6.28 -21.97 -21.69 -30.21 -33.36 -36.47 -28.35 -24.82 -30.13 -28.8 -39.68 -41.25 -50.2 -56.86 -45.57 -42.01 -31.11 -30.25 -36.37 -27.03 -26.06 -10.22 -13 -20.48 -29.7 -30.25 -35.42 -48.46 -65.03 -45.38 -45.45 -31.1 -15.74 -17.96 -14.34 -4.8 -13.61 -23.29 -31.39 -27.63 -32.68 -34.61 -33.17 -61.01 -52.21 -63.17 -57.14 -46.2 -36.59 -50.37 -53.65 -32.3 -21.77 -30.41 -23.07 -25.12 -31.17 -26.95 -28.62 -28.06 -53.08 -6.52 -10.87 -16.07 -23.88 -21.69 -3.81 -3.28 -3.41 -4.08 -5.37 -4.32 -1.57 -10.85 -9.61 -15.88 -34.16 -27.31 -25.02 -17.64 -14.9 -14.16 -NA -15.07 -16.05 -19.18 -23.68 -29.82 -39.81 -31.6 -22.31 -15.43 -10.5 -14.24 -7.27 -4.73 -18.83 -11.02 -25.18 -32.14 -31.46 -26.69 -23.05 -28.53 -2.48 -10.66 -16.66 -34.06 -31.74 -36.08 -20.48 -17.64 -17.81 -28.54 -17.29 -17.98 -11.8 -10.97 -15.57 -14.72 -14.9 -41.6 -13.97 -2.02 -6.55 -8.03 -6.78 -28.8 -13.69 -10.83 -28.32 -27.66 -34.26 -19.73 -19.55 -21.68 -21.16 -27.49 -49.04 -49.49 -34.4 -36.29 -25.69 -19.89 -30.77 -27.37 -32.97 -31.38 -43.02 -39.63 -20.66 -22.43 -33.33 -31.92 -31.92 -36.09 -36.42 -8.35 -6.18 -32.39 -15.56 -19.53 -33.37 -38.54 -33.17 -22.31 -32.15 -26.14 -26.25 -21.42 -24.2 -36.65 -32.64 -18.6 -3.49 -29.69 -32.01 -34.52 -27.68 -34.6 -34.87 -31.47 -39.53 -32.99 -33.99 -36.84 -30.09 -25.16 -30.01 -27.74 -23.3 -21.31 -29.4 -19.83 -32.98 -29.23 -28.51 -26.66 -34.06 -28.64 -20.16 -32.26 -33.74 -16.24 -9.53 -16.09 -28.65 -30.72 -23.2 -12.92 -25.16 -16.13 -16.83 -20.78 -17.25 -18.39 -15.25 -9.66 -13.25 -11.14 -6.25 -23.06 -10.49 -13.52 -11.97 -17.59 -13.3 -24 -18.81 -14.24 -13.04 -19.95 -14.3 -11.94 -21.11 -21.27 -6.06 -13.26 -11.02 -22.91 -16.97 -19.58 -23.3 -12.92 -16.45 -12.89 -21.73 -18.3 -20.63 -25.42 -11.42 -8.47 -12.18 -14.48 -4.91 -16.72 -13.39 -12.89 -21.13 -17.13 -13.56 -24.81 -20.13 -32.85 -33.37 -18.35 -15.5 -14.18 -9.91 -13.25 -16.65 -9.62 -5.54 -6.56 -20.3 -17.95 -6.26 -9.54 -6.32 -20.42 -6.12 -8.14 -6.64 -17.7 -13.02 -20.06 -9.86 -11.58 -13.21 -15.51 -16.38 -3.64 -16.05 -11.91 -13.26 -18.78 -10.03 -20.51 -18.9 -12.57 -11.7 -5.65 -16.15 -11.25 -12.65 -7.87 -6.34 -7.29 -NA -NA -28.2 -13.62 -11.89 -15.45 -18.45 -17.66 -22.69 -27.86 -26.49 -19.63 -26.58 -13.06 -10.73 -12.93 -15.09 -22.66 -24.79 -14.01 -10.77 -13.97 -26.14 -10.75 -30.12 -25.6 -16.66 -11.69 -10.78 -24.39 -14.77 -35.66 -28.33 -29.28 -41.09 -10.56 -21.44 -9.99 -8.53 -8.42 -13.41 -19.12 -12.46 -18.42 -19 -26.52 -14.89 -31.49 -28.57 -13.23 -16.74 -23.31 -38.63 -24.71 -33.83 -35.34 -16.39 -26.77 -27.39 -33.01 -24.81 -31.73 -29.94 -44.92 -20.53 -15.01 -10.17 -21.03 -18.36 -25.74 -16.14 -8.11 -9.89 -NA -33.41 -31.1 -27.44 -18.45 -24.54 -31.04 -33.67 -27.47 -25.78 -24.22 -26.46 -16.5 -26.15 -33.42 -23.35 -19.78 -27.71 -35.37 -20.7 -20.61 -23.07 -13.87 -9.15 -11.11 -55.3 -37.83 -41.02 -34.86 -14.93 -42.73 -37.87 -42.01 -25.11 -38.77 -40.26 -31.14 -46.04 -48.63 -47.99 -56.51 -42.44 -36.89 -28.44 -24.33 -39.04 -27.55 -39.36 -42.71 -40.17 -49.04 -46.37 -40.36 -22.9 -19.84 -17.69 -14.02 -37.68 -10.64 -24.17 -15.91 -4.76 -5.75 -18.13 -13.75 -10.16 -12.48 -19.43 -13.18 -3.18 -43.61 -30.39 -35.34 -23.25 -25.61 -12.97 -15.57 -11.12 -16.81 -19.04 -16.24 -7.53 -6.5 -17.18 -33.4 -32.31 -41.3 -34.08 -12.29 -17.82 -9.57 -20.94 -7.97 -9.37 -10.73 -6.13 -8.56 -6.73 -19.7 -14.88 -18.68 -6.19 -6.42 -11.4 -4.77 -3.98 -6.49 -5.78 -2.5 -6.9 -5.43 -11.84 -3.13 -1.9 -3.54 -5.48 -4.78 -8.54 -4.5 -2.29 -2.39 -3.12 -1.82 -7.84 -2.54 -2.61 -4.73 -11.88 -6.42 -1.86 -6.34 -5.48 -1.25 -1.93 -1.79 -4.84 -3.85 -4.07 -1.64 -5.47 -6.69 -26.25 -20.87 -19.05 -14.92 -14.34 -5.36 -3.35 -3.92 -7.98 -3.96 -4.19 -37.31 -8.01 -5.03 -7.79 -5.74 -22.72 -10.11 -18.07 -49.34 -21.87 -23.77 -16.91 -14.46 -12.69 -14.9 -13.39 -20.13 -6.69 -15.06 -15.63 -11.27 -24.8 -33.52 -60.68 -26.47 -40.56 -50.62 -31.04 -37.85 -47.93 -44.46 -43.87 -26.13 -27.87 -33.12 -34.36 -40.15 -28.94 -49.16 -55.87 -54.35 -37.6 -55.32 -39.89 -49.7 -55.51 -38.13 -12.82 -8.08 -8.52 -28.53 -27.84 -12.18 -18.23 -17.59 -5.02 -5.93 -4.74 -2.12 -47.24 -20.57 -26.14 -29.44 -19.48 -21.39 -18.62 -19.71 -14.78 -11.5 -16.42 -14.28 -21.43 -23.94 -4.16 -5.21 -4.96 -4.98 -10.6 -11.7 -3.39 -10.15 -3.33 -2.34 -5.57 -4.25 -9.41 -13.99 -4.22 -4.21 -9.34 -10.01 -8.05 -7.29 -21.97 -18.34 -21.38 -11.84 -14.26 -9.62 -7.19 -5.5 -10.26 -13.8 -5.85 -16.44 -21.36 -4.98 -4.64 -9.81 -5.17 -60.37 -80.75 -76.4 -75.3 -55.37 -60.03 -64.45 -81.33 -67.3 -70.21 -75.46 -80.55 -93.18 -72.68 -79.17 -71.21 -59.83 -61.39 -51.29 -36.01 -28.25 -47.39 -48.19 -32.07 -32.51 -37.91 -69.73 -50.09 -55.24 -61.28 -59.52 -67.94 -54.37 -44.3 -56.48 -68.07 -53.98 -67.59 -65.62 -58.1 -50.46 -55.31 -61.55 -47.94 -42.88 -48.1 -41.3 -57.25 -49.18 -38.95 -41.93 -28.55 -34.74 -52.94 -52.45 -48.94 -45.1 -64.87 -47.1 -22.7 -50.81 -52.67 -36.37 -34.09 -60.34 -53.72 -35.34 -51.66 -31.61 -38 -42.23 -48.04 -33.62 -48.46 -51.66 -18.66 -22.54 -31.84 -37.48 -21.13 -14.36 -32.65 -35.42 -14 -19.08 -19.8 -61.5 -16.13 -19.9 -21.44 -36.37 -29.52 -46.08 -43.75 -25.81 -23.14 -24.21 -41.41 -40.22 -48.27 -33.48 -41.97 -29.63 -25.41 -44.88 -55.13 -58.65 -51.34 -44.99 -44.84 -37.96 -39.87 -45.03 -46.47 -33.56 -33.54 -23.89 -53.5 -35.61 -42.76 -5.51 -15.92 -14.38 -11.66 -9.78 -28.24 -23.34 -16.05 -11.45 -15.2 -16.23 -19.2 -10.34 -7.01 -5.87 -10.67 -10.44 -12.94 -41.87 -18.61 -31.05 -40.1 -39.61 -24.86 -11.73 -17.88 -34.86 -20.45 -13.33 -35.68 -29.76 -21.44 -16.88 -19.46 -15.77 -11.44 -12.66 -12.95 -36.94 -45.66 -52.15 -35.53 -33.05 -12.78 -16.64 -10.54 -8.78 -51.79 -50.99 -59.68 -47.73 -54.8 -49.29 -66.35 -51.08 -53.14 -48.83 -43.93 -70.2 -36.76 -46.36 -45.7 -54.28 -45.59 -48.64 -50.23 -40.05 -47.24 -NA -40.23 -37.62 -44.02 -45.79 -44.76 -47.34 -52.17 -47.28 -57.16 -56.51 -27.94 -21.75 -30.4 -42.59 -24.88 -15.15 -38.44 -21.82 -18.62 -17.4 -27.43 -13.52 -8.04 -12.4 -10.33 -28.07 -27 -22.1 -31.21 -14.69 -10.99 -17.54 -10.27 -11.36 -15.16 -11.19 -21.27 -24.49 -27.63 -14.75 -19.65 -21.73 -13.63 -17.51 -16.46 -11.83 -NA -44.74 -50.99 -39.91 -53.21 -49.07 -47.78 -45.1 -30.32 -35.16 -40.51 -43.58 -31.76 -44.72 -50.8 -54.85 -48.3 -37.66 -41.64 -21.37 -34.49 -25.34 -46.9 -44.65 -41.58 -60.51 -58.38 -19.46 -22.87 -25.77 -21.08 -10.62 -15.06 -7.55 -15.28 -16.52 -23.55 -49.77 -46.63 -56.1 -44.09 -54.23 -8.13 -40.08 -18.67 -33.69 -45.72 -50.69 -30.39 -30.55 -30.95 -33.96 -38.81 -30.24 -31.39 -25.41 -25.78 -22.35 -25.21 -43.92 -40.71 -42.58 -41.9 -47.52 -48.95 -56.19 -46.37 -58.34 -59.5 -44.83 -40.27 -30.27 -45.59 -53.89 -68.07 -67.05 -71.91 -63.75 -51.95 -57.12 -73.36 -59.14 -53.18 -21.12 -16.01 -17.91 -13.27 -16.08 -44.56 -42.95 -40.87 -41.25 -35.91 -30.38 -21.4 -20.03 -19.36 -20.77 -48.79 -52.3 -52.83 -39.61 -47.68 -41.6 -50.03 -42.03 -40.83 -27.34 -27.01 -51.08 -11.83 -25.14 -35.39 -39.39 -41.19 -44.03 -11.24 -24.12 -42.63 -45.25 -38.24 -60.27 -13.85 -17.57 -9.5 -11.72 -12.88 -15.47 -16.52 -8.47 -18.67 -16.7 -12.9 -48.98 -36.17 -46.1 -52.28 -46.1 -53.53 -NA -43.54 -68.74 -48.62 -NA -NA -55.31 -48.33 -48.05 -58.48 -50.22 -29.4 -45.74 -43.59 -42.31 -17.03 -29.1 -20.46 -43.38 -35.77 -24.75 -21.12 -16 -18.17 -33.81 -28.76 -24.23 -24.72 -32.75 -26.73 -17.4 -37.9 -42.48 -NA -18.28 -29.48 -13.69 -31.66 -16.77 -35.86 -63.93 -42.73 -40.12 -39 -49.17 -51.11 -39.42 -35.09 -41.24 -40.07 -50.56 -40.69 -32.66 -26.14 -30.92 -39.83 -48.37 -26.17 -22.29 -24.59 -37.46 -52.55 -53.02 -33.6 -52.52 -45.39 -69.6 -51.83 -48.34 -34.15 -44.47 -34.69 -53.97 -NA -41.52 -NA -19 -25.87 -19.87 -17.01 -15.47 -20 -22.94 -22.71 -38.38 -35.15 -13.26 -27.05 -10.78 -17.51 -15.72 -12.56 -17.62 -13.23 -26.38 -30.58 -10.78 -NA -6.62 -20.57 -23.81 -13.17 -26.11 -30.64 -19.86 -27.07 -33.59 -31.91 -47.82 -34.95 -19.63 -25.8 -30.65 -19.52 -21.3 -35.39 -40.12 -38.77 -29.79 -47.25 -42.74 -42.91 -56.86 -57.53 -63.26 -58.9 -58.41 -54.89 -50.25 -49.19 -58.77 -74.98 -50.52 -58.69 -50.47 -58.96 -23.96 -27.52 -18.09 -33.89 -36.09 -39.41 -26.23 -35.41 -34.12 -41.58 -30.4 -38.87 -49.93 -17.01 -56.56 -19.58 -26.81 -19.53 -20.77 -29.62 -40.46 -36.34 -36.3 -29.54 -22.01 -20.66 -17.48 -9.07 -13.95 -22.62 -41.97 -22.72 -30.34 -34.97 -63.15 -30.68 -36.83 -33.69 -22.54 -26.31 -31.49 -27.95 -25.59 -17.81 -29.25 -18.98 -27.15 -35.54 -25.06 -25.24 -25.05 -19.73 -22.99 -23.45 -22.95 -22.66 -44.83 -36.9 -14.98 -36.79 -31.7 -32.46 -39.71 -20.3 -42 -43.07 -38.58 -25.95 -NA -43.12 -31.43 -42.01 -34.59 -53.32 -41.8 -49.97 -48.88 -40.22 -31.94 -44.71 -35.09 -28.86 -36.44 -45.77 -41.17 -51.67 -51.97 -68.96 -43.18 -56.55 -52.64 -59.31 -55.4 -41.35 -45.63 -27.38 -46.87 -49.92 -40.52 -48.67 -46.48 -31.97 -42.93 -46.76 -68.43 -70.33 -57.82 -56.79 -54.93 -52 -55.14 -59.8 -54.41 -59.69 -52.83 -54.84 -62.66 -52.6 -46.99 -42.54 -49.61 -68.65 -53.09 -45.7 -59.39 -68.18 -59.45 -47.67 -57.71 -62.14 -58.79 -70.04 -67.86 -53.42 -58.72 -56.66 -36.23 -54.62 -50.94 -56.52 -58.3 -57.74 -65.23 -59.67 -50.82 -48.21 -40.37 -42.98 -31.98 -38.63 -39.55 -40.88 -44.01 -29.1 -27.36 -40.39 -58.67 -51.47 -36.97 -53.26 -45.42 -59.3 -45.95 -24.08 -28.38 -33.37 -24.68 -33.15 -32.48 -29.73 -35.96 -45.96 -49.07 -32.59 -32.93 -41.09 -28.22 -33.27 -60.57 -52.29 -63.14 -65.37 -64.96 -52.02 -71.85 -58.51 -50.45 -54.19 -49.68 -51.44 -64.04 -43.48 -53.41 -47.76 -46 -43.96 -52.73 -55.78 -41.51 -45.94 -53.53 -45.78 -64.22 -64.47 -51.9 -36.89 -49.96 -29.48 -26.96 -34.18 -23.51 -33.71 -47.53 -57.51 -46.37 -28.54 -38.14 -43.02 -37.57 -43.32 -45.4 -50.07 -37.11 -51.24 -49.2 -42.82 -57.87 -49.42 -43.25 -45.23 -52.43 -49.23 -48.14 -51.71 -49.8 -36.09 -42.94 -40.45 -42.48 -38.69 -32.94 -41.06 -41.05 -48.38 -31.92 -9.85 -20.46 -18.79 -16.01 -53.2 -52 -55.01 -52.93 -50.01 -45.67 -35.09 -48.46 -37.25 -34.98 -18.74 -28.9 -26.62 -35.19 -14.37 -22.94 -15.62 -30.08 -33.22 -31.93 -12.93 -15.03 -16.47 -27.55 -29.77 -25.99 -5.81 -12.24 -31.71 -28.86 -34.53 -49.21 -43.75 -37.23 -25.73 -35.22 -32.92 -49.69 -32.64 -13.19 -12.18 -15.59 -20.95 -9.89 -32.07 -24.61 -24.81 -18.48 -29.25 -27.49 -25.72 -18.33 -8.18 -14.56 -7.46 -23.07 -31.76 -22.53 -13.84 -24.12 -15.66 -27.02 -34.78 -11.94 -15.69 -12.91 -5.96 -27.99 -29.15 -26.11 -23.77 -20.64 -32.34 -36.29 -22.32 -30.61 -23.49 -23.2 -25.23 -26.91 -27.69 -26.46 -35.95 -35.6 -39.57 -30.65 -29.13 -40.67 -38.97 -19.59 -33.11 -56.3 -24.01 -56.46 -68.57 -27.88 -18.53 -23.93 -15.35 -55.97 -41.41 -64.05 -59.5 -41.68 -35.35 -62.45 -39.71 -32.75 -45.51 -33.1 -32.01 -39.67 -30.39 -29.06 -40.55 -29.93 -20.97 -9.51 -25.61 -24.53 -20.48 -21.66 -27.76 -32.8 -31.19 -25.63 -23.06 -43.06 -48.37 -35.53 -33.57 -41.91 -35.55 -46.19 -50.84 -39.91 -58.12 -53.74 -53.85 -39.66 -41.2 -37.96 -49.72 -42.8 -49.27 -46.25 -48.57 -44.64 -49.33 -39.58 -59.6 -51.68 -58.63 -37.2 -51.64 -59.33 -39.37 -29.76 -22.62 -28.05 -24.36 -23.73 -27.28 -39.67 -45.98 -39.92 -52.36 -57.13 -47.83 -14.97 -12.79 -11.56 -6.19 -13.7 -17.86 -20.34 -17.38 -26.59 -24.75 -33.5 -23.33 -31.33 -46.87 -56.36 -54.38 -62.18 -44.71 -45.03 -34.61 -34.29 -35.34 -40.28 -41.33 -34.83 -48.28 -48.4 -37.91 -53.44 -66.95 -39.63 -46.45 -62.26 -45.21 -45.37 -53.97 -63.82 -57.56 -63.38 -32.1 -37.78 -38.25 -42.53 -16.44 -43.75 -52.16 -49.23 -36.99 -37.74 -46.96 -44.4 -53.28 -65.99 -49.66 -77.35 -73.09 -57.9 -35.06 -45.81 -33.37 -45.27 -37.19 -38.69 -49.12 -56.77 -55.75 -62.08 -68.07 -68.92 -65.82 -68.04 -64.92 -82.39 -70.13 -75.72 -63.58 -28.03 -44.19 -73.31 -75.99 -66.35 -59.69 -45.58 -59.88 -60.63 -52.01 -55.97 -51.78 -34.56 -50.2 -34.08 -31.5 -69.81 -48.3 -64.72 -46.7 -58.18 -37.42 -51.41 -52.04 -47.86 -31.33 -54.58 -48.15 -53.56 -51.89 -52.41 -47.6 -59.43 -56.33 -55.73 -50.5 -57.44 -52.03 -54.24 -52.15 -44.88 -54.91 -51.53 -54.94 -51.73 -19.8 -40.6 -28.86 -42 -43.18 -48.06 -45.89 -45.97 -38.36 -35.03 -30.66 -26.77 -39.17 -29.78 -34.61 -30.52 -40.95 -38.74 -46.6 -43.81 -24.78 -38.03 -39.4 -48.33 -42.71 -39.78 -53.66 -35.39 -36.51 -34.29 -32.17 -26.17 -25.89 -33.07 -28.23 -40.6 -26.92 -42.94 -41.7 -37.22 -45.58 -45.84 -47.15 -45.91 -40.55 -44.17 -26.65 -17.81 -23.12 -28.35 -26.8 -29.92 -16.14 -22.07 -23.82 -22.96 -23.9 -24.08 -21.85 -21.08 -30.3 -17.6 -23.66 -22.51 -26.89 -26.01 -34.43 -17.33 -23.77 -38.26 -46.25 -41.21 -49.1 -49.94 -42.34 -42.35 -61.89 -57.45 -44.49 -45.39 -55.4 -52.49 -55.94 -44.16 -44.37 -57.64 -40.75 -54.48 -57.46 -69.52 -72.78 -48.77 -60.95 -49.68 -43.58 -39.72 -42.61 -44.59 -42.48 -45.06 -62.25 -50.42 -50.09 -51.08 -45.38 -45.95 -49 -43.08 -40.81 -45.61 -43.65 -40.44 -47.34 -34.14 -44.96 -33.78 -62.73 -55.39 -62.51 -40.87 -50.36 -46.81 -48.02 -60.62 -44.29 -76.52 -75.55 -60.48 -62.38 -59.78 -76.65 -64.65 -69.26 -60.07 -52.82 -57.61 -53.36 -59.85 -59.04 -56.98 -54.75 -55.05 -62.38 -65.69 -69.56 -65.14 -55.25 -60.2 -60.13 -64.86 -60.76 -51.06 -49.99 -42.06 -42.58 -48.99 -55.65 -57.1 -60.11 -52.43 -55.16 -53.04 -63.75 -53.55 -49.03 -50.69 -57.99 -47.14 -62.57 -63.14 -34.72 -34.24 -38.33 -39.14 -42.81 -46.27 -46.1 -42.91 -55.94 -55.03 -39.59 -39.05 -50.51 -35.44 -51.79 -50.33 -41.19 -44.24 -34.54 -57.7 -60.89 -51.67 -64.5 -49.65 -51.53 -43.05 -50.25 -55.18 -50.94 -49.52 -38.32 -40.46 -43.55 -51.25 -53.98 -56.87 -57.57 -46.04 -72.93 -76.24 -69.57 -58.48 -71.24 -67.63 -55.54 -62.4 -62.92 -66.53 -70.76 -51.3 -60.01 -66.43 -60.22 -68.33 -59.38 -55.68 -58.79 -74.91 -64.15 -57.6 -57.23 -61.49 -64.86 -68.15 -53.31 -68.26 -58.51 -65.66 -53.47 -62.63 -61.69 -68.24 -67.75 -63.19 -73.34 -73.33 -63.83 -76.85 -8.73 -6 -6.95 -7.61 -7.71 -6.51 -6.54 -6.22 -2.16 -6.96 -5.2 -3.85 -18.27 -4.17 -2.23 -13.34 -11.66 -16.66 -21.66 -10.46 -10.57 -21.38 -20.25 -NA -23.64 -20.96 -24.13 -17.58 -5.73 -22.93 -15.87 -11.69 -18.4 -19.9 -15.52 -21.08 -34 -23.02 -30.56 -21.96 -26.82 -27.65 -30.96 -29.15 -26.43 -20.04 -16.79 -8.26 -13.76 -12.35 -7.48 -38.1 -24.75 -39.11 -27.29 -27.91 -19.47 -20.66 -19.7 -25.52 -30.12 -30.56 -34.89 -24.63 -35.98 -21.76 -13.99 -8.71 -20.29 -20.52 -21.38 -25.42 -18.84 -23.9 -15.84 -16.86 -22.98 -25.13 -30 -23.7 -19.55 -26.06 -23.31 -17.78 -18.26 -18.22 -12.1 -13.55 -20.56 -22.26 -17.68 -27.54 -35.7 -35.74 -25.06 -19.37 -16.49 -30.89 -19.26 -29.19 -13.57 -22.44 -11.39 -19.3 -11.66 -13.65 -14.47 -15.73 -22.11 -42.65 -46.69 -19.25 -9.91 -66.54 -58.13 -63.5 -74.44 -77.25 -53.29 -67.09 -47.97 -52.84 -27.01 -41.9 -42.42 -24.2 -42.37 -51.84 -62.66 -42.18 -40.8 -53.28 -45.77 -55.86 -47.74 -47.16 -45.55 -53.14 -71.29 -52.91 -58.86 -64.76 -61.64 -24.04 -70.53 -54.01 -32.82 -13.2 -17.91 -58.36 -49.96 -36.75 -38.33 -16.87 -62.39 -50.37 -34.48 -21.38 -18.27 -17.38 -26.39 -34.75 -30.09 -8.45 -18.25 -12.07 -28.48 -17.95 -24.25 -20.52 -16.72 -9.67 -21.37 -12.26 -27.15 -31.45 -25.24 -30.41 -35.43 -21.07 -39.44 -26.48 -22.19 -25.95 -46.58 -66.08 -55.99 -49.53 -57.75 -47.98 -42.49 -41.74 -47.67 -39.01 -41.78 -34.46 -42.32 -49.2 -42.23 -50.88 -51.22 -66.71 -68.86 -51.92 -53.23 -60.76 -51.24 -16.6 -24.59 -28.01 -17.74 -35.62 -54.17 -51.25 -23.41 -41.19 -41.55 -53.79 -32.49 -31.22 -32.26 -30.3 -20.19 -23.13 -23.64 -23.48 -34.42 -26.22 -42.14 -47.13 -NA -40.1 -51.57 -41.35 -47.23 -13.95 -10.85 -17.21 -18.3 -36.75 -19.19 -17.16 -17.61 -11.81 -14.58 -32.64 -28.62 -26.54 -23.35 -21.72 -11.35 -23.27 -28.35 -32.15 -24.35 -23.24 -29.25 -22.19 -17.18 -25.25 -29.27 -36.71 -25.78 -28.58 -32.25 -24.14 -38.37 -44.03 -27.43 -NA -22.07 -32.93 -34.66 -58.57 -49.38 -42.7 -46.32 -57.22 -57.44 -66.4 -51.94 -NA -53.43 -51.51 -50.81 -40.48 -59.53 -59.59 -39.41 -33.72 -42.04 -64.82 -36.06 -59.09 -53.05 -48.23 -49.84 -50.89 -NA -28.46 -15.8 -10.2 -28.62 -24.21 -23.93 -38.79 -24.42 -10.95 -21.83 -23.87 -25.21 -11.89 -15.97 -22.69 -20.14 -25.16 -20.23 -21.98 -19.48 -11.88 -14.92 -25.82 -25.38 -23.94 -16.74 -33.07 -33.07 -29.51 -19.66 -28.72 -27.59 -32.07 -31.78 -46.43 -38.15 -49.93 -30.8 -43.4 -60.16 -41.68 -42.78 -31.09 -45.94 -55.86 -54.09 -68.41 -51.36 -62.77 -48.45 -46.69 -34.63 -44.82 -50.27 -42.67 -42.59 -54.21 -52.47 -50.15 -47.52 -28.48 -40.99 -27.22 -29.26 -26.89 -24.31 -34.5 -28.43 -29.31 -28.83 -32.7 -36.26 -44.29 -31.96 -23.95 -44.23 -27.57 -37.69 -15.6 -29.33 -37.52 -44.43 -37.99 -40.96 -32.94 -51.08 -60.34 -43.49 -49.13 -56.23 -34.06 -40.7 -34.24 -40.71 -30.39 -54.31 -47.32 -49.24 -48.11 -45.55 -41.92 -34.18 -26.62 -26.37 -21.34 -33.88 -37.36 -26.68 -24.81 -29.16 -31.93 -39.85 -49.5 -52.91 -34.83 -54.57 -41.6 -29.58 -62.47 -40.18 -34.93 -54.19 -34.35 -59.49 -13.51 -38.43 -26.53 -32.9 -25.98 -26.1 -19.4 -10.02 -22.62 -16.75 -39.47 -40.62 -14.6 -22.62 -20.59 -11.26 -15.1 -18.11 -28.19 -62.58 -35.37 -11.16 -41.84 -37.12 -10.06 -11.37 -17.12 -18.75 -8.95 -10.78 -16.61 -17.26 -16.7 -13.84 -18.04 -23.48 -19.26 -18.54 -37.3 -31.45 -32.87 -23.49 -39.7 -39.97 -21.12 -30.98 -25.21 -27.17 -10.81 -15.19 -17.6 -26.55 -24.16 -27.04 -23.03 -39.87 -46.8 -53.91 -43.27 -46.32 -52.03 -50.06 -47.24 -66.56 -61.55 -64.31 -46.55 -36.8 -76.26 -66.78 -64.58 -57.03 -48.81 -52.21 -51.84 -54.32 -58.86 -55.5 -51.36 -76.91 -57.51 -68.72 -49.7 -51.74 -63.87 -67.02 -54.53 -61.83 -46.09 -62.71 -63.13 -70.22 -10.93 -15.23 -11.49 -21.57 -27.23 -22.25 -7.76 -6.81 -6.75 -9.31 -12.09 -34.16 -30.02 -22.31 -15.51 -23.1 -22.98 -21.19 -28.12 -39.13 -28.91 -35.65 -24.42 -26.5 -33.71 -27.28 -37.45 -31.22 -31.32 -28.18 -17.98 -16.3 -9.64 -19.75 -25.14 -14.19 -17.52 -23.69 -32.61 -23.65 -13.43 -16.92 -12.79 -21.41 -18.36 -20.85 -6.58 -21.3 -18.8 -8.07 -8.72 -12.19 -21.77 -15.12 -24.83 -28.91 -12.63 -20.79 -26.25 -35.85 -35.55 -21.33 -8.82 -18.95 -7.1 -11.37 -16.6 -31.04 -37.69 -30.96 -36.35 -42.01 -39.57 -41.75 -37.35 -33.14 -32.97 -39.24 -36.44 -38.11 -43.14 -38.32 -37.64 -44.82 -41.7 -40.15 -34.13 -35.78 -22.79 -24.06 -16.78 -29.09 -16.33 -32.31 -28.04 -25.18 -30.64 -34.97 -31.23 -26.42 -25.07 -47.88 -39.67 -35.85 -39.4 -49.7 -39.22 -39.45 -29.58 -39.76 -27.03 -33.35 -20.76 -32.27 -14.29 -12.8 -18.46 -39.89 -56.3 -44.73 -45.43 -38.19 -51.52 -48.22 -39.5 -37.89 -43.94 -35.52 -38.97 -29.78 -47.2 -17.77 -27.58 -34.06 -35.63 -28.8 -27.76 -47.87 -47 -29.96 -38.97 -46.42 -40.32 -51.42 -58.59 -62.48 -55.24 -48.91 -50.23 -53.33 -52.86 -45.61 -54.88 -40.76 -40.59 -34.81 -56.38 -58.73 -41.27 -47.13 -39.45 -33.71 -34.64 -33.67 -22.11 -23.48 -25.87 -24.74 -32.31 -24.76 -26.04 -15.89 -22.4 -25.34 -20.39 -24.77 -25.36 -19.99 -37.42 -27.07 -24.39 -39.17 -NA -41.52 -52.44 -43.37 -46.25 -58.18 -49.3 -46.47 -51.62 -45.37 -49.6 -49.56 -51.21 -64.9 -62.95 -56.59 -64.38 -58.21 -50.04 -46.94 -51.68 -60.33 -60.98 -57.46 -50.76 -51.42 -67.89 -73.71 -52.83 -56.07 -60.49 -57.77 -48.08 -48.86 -44.22 -60.92 -38.79 -51.64 -52.02 -62.27 -60.58 -50.94 -36.15 -52.15 -74.06 -61.5 -70 -NA -66.29 -69.06 -57.65 -53.88 -55.7 -63.92 -65.54 -66.87 -67.56 -69.29 -57.33 -44.07 -55.31 -42.92 -49.44 -54.56 -50.91 -49.43 -57.57 -57.08 -52.52 -62.44 -54.59 -43.78 -47.87 -55.49 -60.1 -62.93 -51.65 -55.78 -64.41 -51.36 -47.42 -55.77 -72 -60.67 -62.81 -54.34 -43.13 -63.32 -71.9 -72.69 -73.82 -66.73 -71.4 -70.45 -46.36 -51.92 -63.83 -59.44 -47.05 -60.39 -35.19 -47.35 -50.64 -54.01 -57.57 -63.05 -61.58 -63.95 -62.09 -62.02 -63.66 -74.9 -56.3 -45.81 -42.26 -62.79 -62.19 -50.31 -60.76 -55.62 -40.75 -52.64 -37.41 -42.2 -46.66 -59.06 -38.27 -66.38 -63.73 -66.43 -75.11 -57.46 -68.47 -51.26 -53.34 -40.53 -49.3 -65.11 -55.86 -70.56 -60.3 -63.66 -62.34 -72.57 -51.48 -72.25 -58.7 -53.98 -54.69 -59.91 -59.14 -55.52 -56.55 -59.12 -65.99 -65.81 -65.31 -61.02 -63.34 -51.39 -52.74 -52.29 -46.64 -55.28 -54.4 -65.67 -73.92 -73.16 -80.71 -52.1 -66.21 -64.69 -60.27 -50.88 -50.23 -54.45 -65.75 -62.43 -59.33 -79.29 -35.36 -56.21 -42.9 -35.2 -38.57 -55.98 -53.67 -51.1 -44.7 -35.46 -31.95 -33.17 -39.17 -37.56 -42.56 -34.96 -57.14 -48.21 -54.34 -56.25 -56.55 -45.5 -NA -47.01 -37.25 -44.31 -53.74 -35.23 -34.18 -36.74 -28.03 -39.76 -40.85 -39.07 -26.49 -37.62 -43.12 -51.45 -25.45 -38.11 -42.6 -47.01 -36.29 -37.31 -26.45 -NA -42.97 -45.52 -47.54 -40.25 -45.48 -48.04 -49.13 -48.71 -43.53 -55.92 -42.97 -50.12 -43.58 -37.11 -40.59 -38.43 -40.72 -35.57 -36.6 -39.94 -46.78 -35.75 -52.25 -58.81 -49.76 -62.66 -60.12 -60.44 -64.69 -46.5 -46.54 -40.62 -46.24 -44.03 -26.48 -43.03 -49.36 -37.83 -42.71 -37.65 -46.17 -51.86 -51 -44.55 -38.21 -31.11 -34.77 -32.32 -22.87 -18.83 -13.1 -21.87 -21.49 -21.65 -23.35 -31.67 -25.34 -31.87 -35.69 -38.02 -36.56 -32.86 -43.16 -32.19 -38.96 -32.75 -31.51 -15.05 -52.24 -40.21 -19.8 -21.96 -22.94 -56.81 -68.2 -69.38 -61.03 -71.42 -51.03 -49.59 -71.21 -74.37 -60.46 -63.67 -69.39 -47.65 -48.05 -48.72 -38.99 -32.32 -23.05 -22.24 -16 -22.51 -20.03 -22.17 -19.89 -25.23 -35.04 -29.16 -29.43 -30.2 -44.71 -58.34 -47.78 -45.08 -16.01 -30.81 -24.49 -42.11 -45.24 -41.76 -38.11 -69.65 -51.14 -51.08 -59.37 -56.84 -50.89 -60.16 -62.97 -53.98 -41.27 -43.87 -48.72 -62.69 -58.29 -52.39 -37.01 -42.9 -28.63 -16.4 -12.12 -10.14 -18.56 -13.49 -12.86 -25.1 -24.25 -13.87 -22.67 -10.82 -NA -10.55 -NA -25.54 -11.23 -24.47 -21.26 -27.87 -44.84 -40.34 -38.47 -45.4 -48.51 -59.57 -69.66 -64.73 -NA -67.06 -65.57 -56.7 -51.7 -48.3 -42.19 -51.17 -48.23 -53.63 -43.45 -39.45 -39.15 -39.61 -32.1 -26.7 -33.77 -22.36 -11.95 -20.51 -19.5 -43.36 -39.02 -24.86 -38.17 -15.99 -11.53 -12.02 -11.11 -9.4 -8.58 -25.22 -19.74 -6.29 -17.63 -NA -55.12 -38.31 -46.54 -46.29 -55.33 -51.26 -40.91 -36.91 -59.14 -36.17 -48.44 -32.01 -30.59 -33.94 -26.14 -37.81 -52.56 -31.25 -48.93 -42.31 -47.66 -48.2 -39.7 -47.02 -44.85 -34.19 -57.37 -41.06 -64.97 -54.28 -57.97 -67.99 -64.43 -56.55 -43.23 -42.06 -48.81 -58.1 -49.45 -53.35 -56.36 -54.55 -51.12 -46.12 -47.22 -49.02 -32.6 -44.39 -38.44 -35.88 -36.32 -44.67 -38.06 -38.96 -49.34 -57.83 -52.08 -52.14 -65.91 -53.17 -68.75 -57.34 -33.47 -50.27 -39.66 -43.32 -52.19 -45.9 -48.31 -58.71 -46.62 -48.35 -32.52 -38.32 -36.73 -46.99 -40.89 -46.81 -49.21 -39.26 -36.69 -47.31 -22 -10.69 -26.83 -19.41 -15.33 -11.81 -4.32 -4.22 -8.04 -11.49 -16.38 -16.66 -8.92 -19.2 -10.58 -8 -11.89 -9.13 -3.98 -3.08 -5.37 -6.46 -10.7 -7.15 -9.85 -13.15 -19.14 -12.94 -10.46 -8.44 -7.51 -28.11 -34.01 -22.47 -32.24 -28.75 -32.58 -33.49 -27.84 -15.79 -8.87 -31 -18.71 -27.01 -22.54 -20.82 -6.93 -22.08 -34.17 -29.32 -22.67 -27.13 -24.61 -21.86 -13.25 -23.88 -20.42 -11.85 -14.32 -15.93 -21.74 -26.77 -25.29 -22.74 -29.34 -4.49 -11.52 -8.04 -6.06 -6.47 -11.56 -5.12 -3.88 -9.48 -4.74 -7.13 -16.61 -4.91 -9.1 -9.31 -3.53 -29.56 -35.16 -21.09 -17.93 -19.72 -14.83 -25 -15.82 -17.06 -22.87 -25.73 -18.07 -19.91 -20.36 -38.72 -12.02 -13.93 -18.2 -14.1 -21.37 -13 -20.66 -18.42 -24.88 -38.21 -35.94 -47.52 -44.08 -44.27 -27.46 -25.65 -24.97 -17.27 -23.25 -35.43 -17.44 -26.84 -31.14 -25.65 -33.31 -27.97 -44 -20.07 -24.62 -24.09 -29.9 -32.42 -7.03 -9.04 -12.2 -15.2 -24.86 -12.33 -5.52 -3.55 -17.69 -21.85 -16.58 -4.44 -9.07 -9.42 -7.03 -4.36 -16.76 -11.38 -5.21 -39.47 -18.54 -30.07 -47.2 -51.35 -46.92 -32.39 -32.94 -27.18 -26.56 -21.35 -50.94 -32.12 -43.51 -45.34 -29.84 -28.22 -50.67 -40.9 -34.12 -31.78 -34.49 -48.63 -35.77 -48.28 -23.79 -NA -17.47 -15.48 -25.53 -27.62 -23.66 -20.3 -20.34 -21.01 -13.49 -20.33 -11.26 -10.76 -31.15 -43.18 -50.31 -34.31 -20.86 -30.12 -21.64 -18.48 -30.67 -12.88 -15.37 -12.71 -12.75 -33.16 -43.1 -42.26 -37.22 -41.65 -40.29 -31.86 -27.28 -34.93 -29.79 -27.8 -22.53 -26.92 -18.6 -32.6 -31.14 -20.3 -30.84 -33.48 -26.25 -30.84 -29.24 -26.32 -10.63 -14.25 -16.98 -8.67 -10.56 -12.33 -NA -NA -10.24 -25.7 -NA -7.93 -19.16 -7.56 -3.88 -18.2 -10.65 -10.15 -32.14 -14.91 -12.53 -22.29 -27.99 -18.81 -3.99 -17.02 -22.86 -30.88 -33.31 -25.82 -29.38 -16.8 -16.02 -24.53 -22.42 -18.17 -12.06 -6.75 -17.99 -15.34 -24.32 -12.15 -12.13 -9.28 -6.26 -7.09 -17.12 -15.88 -20.02 -15.05 -14 -14.15 -NA -18.76 -30.81 -24.89 -15.67 -20.77 -20.74 -23.81 -13.89 -17.24 -8.74 -23.94 -16.04 -37.79 -35.38 -7.47 -15.06 -NA -NA -NA -26.64 -NA -NA -NA -NA -NA -NA -NA -NA -NA -49.77 -NA -NA -26.13 -NA -NA -NA -NA -NA -NA -NA -NA -NA -NA -NA -NA -NA -15.74 -15.88 -11.92 -8.13 -9.96 -14.77 -42.43 -45.15 -39.97 -45.03 -60.45 -40.94 -41.3 -41.95 -43.18 -25.34 -52.38 -37.95 -42.05 -40.88 -71.55 -66.63 -56.18 -10.22 -9.57 -2.62 -6.75 -18.85 -4.22 -8.88 -10.53 -16.2 -13.77 -16.31 -19.47 -20.31 -11.6 -3.95 -5.78 -12.43 -11.95 -4.83 -21.46 -4.78 -12.45 -27.78 -31.01 -37.24 -2.89 -5.65 -4.32 -2.8 -3.98 -4.76 -6.02 -2.18 -9.95 -9.63 -5.13 -10.84 -10.72 -NA -8.97 -2.76 -6.96 -7.11 -1.03 -7.79 -1.81 -3.24 -4.97 -18.75 -7.61 -10.9 -11.54 -4.73 -5.05 -11.05 -28.76 -22.87 -15.77 -10.92 -13.97 -11.14 -14.83 -14.62 -16.64 -25.02 -24.04 -25.79 -27.85 -12.05 -16.53 -22.33 -9.38 -15.38 -12.39 -11.83 -30.15 -11.92 -33.07 -37.48 -24.36 -10.43 -55.14 -36.82 -44 -43.02 -35.05 -46.01 -41.37 -32.78 -38.03 -40.87 -45.39 -40.11 -40.52 -43.76 -55.08 -29.91 -48.32 -41.33 -45.53 -48.76 -43.7 -40.5 -35.42 -58.69 -28.45 -33.93 -66.41 -66.5 -54.88 -41.17 -41.35 -56.96 -43.02 -62.6 -54.4 -45.07 -19.84 -39.06 -42.24 -46.69 -47.79 -63.02 -51.06 -32.53 -51.44 -54.79 -43.28 -43.97 -35.32 -31.78 -14.08 -16.36 -13.21 -16.87 -8.6 -14.59 -17.7 -23.86 -28.78 -20.26 -23.09 -29.87 -34.04 -33.26 -34.67 -33.99 -23.11 -18.88 -31.73 -46.29 -28.37 -37.91 -26.33 -19.43 -13.63 -37.55 -34.51 -33.59 -43.86 -13.05 -14.29 -9.61 -24.53 -31.75 -23.44 -37.52 -19.98 -31.48 -13.88 -16.73 -19.2 -23.81 -19.49 -31.68 -4.47 -5.27 -33.96 -NA -4.47 -25.72 -18.19 -28.67 -25.71 -31.73 -24.93 -19.94 -29.38 -25.52 -4.04 -5.29 -3.87 -11.01 -2.8 -3.15 -5.83 -5.07 -4.97 -6.64 -5.41 -6.22 -6.66 -10 -NA -13.44 -7.5 -20.34 -6.01 -7.85 -12.86 -6.16 -12.84 -16.47 -19.6 -15.32 -20.15 -34.01 -35.28 -NA -17.26 -26.21 -25.12 -25.83 -24 -31.78 -34.97 -38.07 -21.33 -32.86 -NA -19.9 -22.5 -29.93 -35.69 -18.3 -10.93 -34.93 -26.98 -17.5 -17.47 -23.34 -19.96 -6.72 -28.05 -14.74 -9.77 -19 -20.6 -11.15 -29.13 -NA -31.54 -14.49 -32.4 -16.77 -20.46 -7.04 -3.8 -19.35 -19.94 -9.14 -6.4 -NA -16.35 -15.12 -18.08 -10.51 -15.07 -12.58 -14.71 -4.56 -9.44 -9.62 -11.22 -6.1 -8.75 -8.96 -12.63 -28.98 -26.41 -35.78 -13.07 -12.37 -11.34 -16.2 -14.2 -5.1 -4 -1.93 -11.54 -25.93 -29.66 -42.26 -45.2 -41.32 -34.81 -38.85 -54.82 -40.24 -33.6 -17.97 -54.8 -23.8 -22.84 -34.58 -15.64 -36.11 -25.95 -25.71 -10.16 -21.6 -24.91 -13.57 -24.34 -26.38 -44.04 -40.09 -27.16 -18.98 -38.46 -30.52 -26.57 -29.98 -25.63 -23.35 -25.87 -18.53 -41.49 -36.55 -20.84 -36.75 -58.33 -50.2 -20.47 -19.83 -17.33 -17.53 -28.89 -28.78 -42.61 -16 -30.55 -20.67 -14.8 -49.84 -43.9 -36.05 -20.23 -18.54 -12.94 -7.98 -10.51 -NA -22.51 -18.95 -9.46 -7.75 -11.49 -18.79 -12.73 -8.92 -8.52 -11.21 -19.68 -9.8 -5.39 -6.69 -4.17 -27.04 -13.47 -10.6 -25.35 -12.09 -21.61 -10.22 -13.27 -17.98 -13.99 -8.71 -8.35 -13.69 -9.16 -14.08 -9.71 -8.35 -11.21 -14.04 -14.78 -32.35 -14.79 -7.13 -19.68 -6.85 -18.58 -12.45 -9.64 -6.84 -4.06 -9.44 -9.4 -10.25 -13.76 -8.78 -9.63 -7.54 -9.98 -8.36 -7.69 -3.85 -5.58 -7.51 -2.49 -1.8 -10.83 -9.08 -8.69 -6.07 -9.51 -8.71 -16.42 -10.76 -8.84 -7.01 -4.02 -4.18 -8.31 -12.23 -10.73 -21.49 -21.95 -7.8 -9.09 -9.48 -12.82 -11.97 -20.08 -11.51 -10.18 -6.1 -11.58 -17.47 -19.84 -17.62 -37.97 -22.19 -11.25 -4.2 -5.37 -11.09 -7.36 -8.36 -6.86 -5.23 -13.27 -8.24 -7.49 -11.44 -8.82 -3.24 -6.54 -10.67 -10.91 -4.6 -5.26 -6.65 -11.72 -17.51 -12.69 -43.41 -33.82 -12.67 -21.31 -10.23 -20.89 -12.56 -11.5 -13.9 -23.01 -20.83 -18.18 -19.24 -16.84 -11.07 -5.85 -25.92 -17.83 -18.08 -14.13 -15.93 -14.42 -20.4 -26.8 -24.93 -21.3 -13.57 -19.84 -16.71 -21.34 -18.53 -15.51 -16.68 -12.01 -10.45 -11.35 -12.63 -21.72 -31.16 -15.85 -23.36 -6.09 -5.11 -14.83 -19.35 -18.26 -24.01 -23.42 -13.85 -6.4 -8.19 -4.87 -8.09 -3.85 -8.06 -5.1 -8.87 -11.8 -9.31 -8.53 -9.64 -10.57 -3.04 -6.54 -8.87 -6.03 -23.07 -26.41 -17.31 -12.69 -6.74 -5.9 -13.47 -8.29 -13.97 -6.73 -6.48 -19.17 -18.22 -6.95 -9.43 -18.64 -14.25 -11.36 -17.95 -20.94 -19.54 -14.65 -10.82 -17.54 -8.52 -16.39 -33.33 -45.06 -34.43 -31.89 -15.5 -13.93 -18.96 -20.31 -24.43 -25.7 -24.34 -22.2 -28.07 -8.87 -25.34 -17.95 -24.97 -48.5 -38.26 -40.31 -29.85 -31.3 -34.2 -40.4 -18.44 -45.04 -41.01 -28.82 -28.77 -44.26 -51.23 -43.81 -53.72 -55.01 -34.1 -38.64 -35 -50.05 -39.01 -45.09 -39.35 -37.32 -47.33 -40.45 -37.31 -41.31 -37.63 -49.88 -37.74 -51.89 -36.75 -45.46 -41.15 -46.86 -45.39 -25.84 -36.94 -31.06 -27.84 -37.41 -28.44 -26.65 -20.89 -20.77 -19.63 -23.75 -36.53 -27.02 -41 -33.17 -7.09 -10.62 -8.56 -4.75 -6.48 -17.88 -7.47 -8.36 -25.9 -25.72 -20.49 -7.14 -6.08 -5.99 -32.32 -25.32 -15.18 -9.49 -18.95 -27.51 -22.22 -23.32 -36.57 -31.52 -33.35 -30.22 -19.87 -25.62 -40.73 -22.84 -18.94 -31.74 -42.36 -27.14 -37.8 -32.88 -39.09 -42.85 -49.94 -37.05 -45.77 -49.72 -48.77 -61.4 -51.65 -40.1 -43.85 -62.78 -31.32 -53.91 -42.17 -39.6 -28.53 -34.82 -30.81 -32.36 -28.96 -49.82 -35.08 -43.91 -41.01 -40.5 -48.25 -45.95 -56.78 -47.8 -63.76 -36.09 -48.83 -36.66 -34.68 -33.4 -27.84 -33.94 -24.68 -37.61 -37.25 -54.29 -38.09 -39.68 -50.18 -40.23 -31.81 -24.25 -50.66 -31.86 -24.69 -32.22 -25.29 -27.07 -20.44 -26.55 -32.16 -24.58 -29.76 -39.8 -30.49 -36 -32.37 -37.79 -39.81 -24.95 -32.4 -38.59 -40.92 -28.8 -41.59 -38 -26.8 -30.27 -43.33 -51.62 -45.16 -36.04 -36.03 -43.86 -46.32 -29.91 -30.5 -25.21 -28.46 -24.56 -16.71 -17.21 -13.99 -11.05 -16.11 -26.67 -29 -23.76 -14.92 -27.66 -27.8 -30.37 -22.33 -8.53 -20.63 -16.95 -24.08 -13.98 -12.02 -7.95 -13.38 -9.72 -23.75 -25.92 -14.07 -11.54 -13.82 -15.21 -27.93 -27.68 -35.9 -30.36 -25.48 -19.95 -15.61 -14.04 -9.33 -13.69 -10.67 -9.17 -38.92 -15.35 -18.18 -20.74 -12.74 -19.01 -33.71 -32.98 -20.54 -29.52 -9.25 -13.53 -17.2 -25.67 -14.07 -6.85 -22.08 -20.73 -20.03 -10.53 -13.34 -15.94 -9.76 -51.94 -22.62 -23.71 -12.2 -22.08 -34.97 -40.11 -29.13 -40.16 -50.74 -37.48 -30.46 -35.76 -45.08 -26.63 -22.09 -22.84 -23.89 -14.23 -16.13 -19.72 -25.65 -16.51 -17.35 -25.54 -15.36 -27.69 -16.4 -15.96 -19.83 -22.74 -23.66 -17.53 -28.1 -27.21 -22.91 -18.95 -20.62 -22.5 -20.81 -15.97 -35.38 -27.03 -19.65 -28.02 -36.96 -20.01 -25.99 -28.09 -43.12 -60.66 -54.66 -32.87 -20.58 -44.87 -32.96 -NA -4.21 -2.91 -9.84 -14.66 -10.07 -24.15 -22.36 -11.18 -10.1 -7.4 -6.05 -10.71 -6.02 -8.17 -2.27 -4.87 -10.48 -19.64 -20.27 -14.05 -7.75 -9.75 -24.44 -25.01 -33.44 -28.31 -27.39 -12.75 -7.58 -9.25 -12.21 -8.42 -10.41 -11.14 -5.63 -20.48 -14.43 -20.68 -5.26 -19.56 -13.5 -2.7 -4.81 -7.29 -21.08 -7.92 -7.61 -8.82 -7.57 -16.02 -4.78 -16.55 -22.15 -13.96 -12.24 -14.67 -13.42 -5.81 -12.63 -20.14 -6.6 -6.75 -9.34 -7.99 -17.28 -5.17 -NA -5.33 -NA -9.57 -8.83 -17.91 -10.05 -8.32 -6.9 -10.26 -8.73 -6.71 -13.8 -4.98 -4.64 -8.39 -11.75 -7.31 -15.14 -9.03 -11.93 -19.69 -22.86 -15.84 -17.48 -39.38 -63.55 -57.9 -49.87 -67.08 -68.45 -43.66 -71.87 -51.59 -19.12 -16.89 -17.75 -28.28 -23.83 -35.54 -25.42 -43.82 -39 -33.27 -53.16 -44.94 -37 -32.3 -37.98 -55.45 -43.64 -41.49 -31.6 -34.74 -37.3 -58.51 -48.49 -41.9 -31.69 -52.6 -59.91 -48.07 -26.49 -48.55 -47.62 -39.9 -36.55 -34.03 -46.32 -47.73 -46.32 -39.39 -25.13 -35.11 -33.52 -39.42 -30.69 -24.37 -21.57 -27.07 -22.89 -15.43 -19.8 -19.56 -14.05 -16.89 -34.33 -34.14 -37.28 -19.07 -22.68 -26.41 -12.25 -33.52 -28.77 -29.84 -28.33 -30.69 -53.58 -40.47 -25.12 -46.95 -54.61 -38.64 -40.33 -37.27 -54.26 -33.77 -37.45 -35.42 -31.53 -33.65 -31.14 -37.34 -42.72 -31.53 -54.03 -31.05 -36.95 -48.66 -54.48 -28.37 -44.18 -55.4 -14.17 -14.64 -20.24 -10.21 -19.62 -14.61 -28.73 -18.46 -23.69 -46.36 -31.88 -24.99 -33.86 -34.49 -15.37 -19.61 -22.7 -16.29 -19.61 -11.47 -17.2 -30.08 -11.34 -30.49 -42.89 -17.35 -16.03 -13.89 -30.25 -14.81 -12.34 -67.33 -39.04 -30.75 -32.83 -28.61 -13.85 -56.73 -19.91 -23 -24.29 -35.71 -45.03 -26.46 -25.59 -21.28 -20.49 -18.04 -14.92 -21.07 -69.96 -41.51 -41.65 -40.16 -33.16 -42.29 -34.33 -40.47 -37.98 -32.97 -48.7 -31.73 -21.3 -30.89 -39.79 -30.56 -29.16 -31.63 -26.32 -19.13 -35.97 -34.34 -32.53 -21.71 -29.88 -37.77 -18.55 -9.59 -20.47 -9.47 -25.09 -9.71 -17.47 -36.3 -27.97 -24.84 -14.18 -19.51 -15.72 -20.16 -29.35 -27.93 -11.78 -17.51 -16.85 -23.1 -16.75 -20.54 -29.9 -14.51 -16.36 -30.47 -22.35 -57.89 -44.87 -38.46 -29.42 -43.77 -39.86 -32.97 -38.38 -45.47 -9.06 -21.77 -15.13 -15.63 -27.07 -19.15 -27.15 -15.17 -10.9 -23.39 -23.96 -16.04 -25.38 -14.88 -11.95 -26.57 -11.01 -16.13 -11.98 -13.01 -18.65 -12.56 -12.78 -10.49 -21.34 -16.53 -10.76 -13.66 -12.42 -13.4 -14.24 -14.85 -23.97 -20.54 -15.19 -14.96 -21.06 -19.24 -20.3 -21.92 -17.4 -23.93 -33.72 -34.02 -39.18 -37.3 -25.95 -27.68 -31.44 -16.56 -19.05 -26.77 -23.21 -44.41 -31.59 -27.34 -40.33 -33.12 -32.47 -30.61 -25.34 -30.17 -25.23 -28.34 -23.75 -14.47 -35.08 -24.83 -30.81 -24.91 -21.22 -25.53 -18.96 -19.56 -18.08 -29.95 -16.47 -34.7 -46.8 -23.56 -21 -21.44 -36.29 -38.29 -23.68 -30.89 -47.94 -42.79 -35.15 -32.48 -20.08 -52.19 -37.88 -19.55 -28.82 -21.95 -16.44 -21.54 -19.83 -19.98 -19.84 -20.55 -16.58 -7.17 -12.02 -15.83 -20.61 -18.05 -22.57 -15.07 -20.45 -23.71 -18.04 -27.14 -16.78 -9.67 -15.69 -14.19 -16.56 -21.4 -12.62 -19.74 -11.02 -8.29 -10.56 -10.13 -7.37 -7.16 -15.12 -12.04 -12.18 -22.24 -12.6 -8.79 -9.37 -11.2 -20.83 -12.15 -28.36 -10.42 -17.9 -10.36 -10.08 -4.38 -3.55 -9.57 -6.37 -14.7 -7.85 -16.07 -17.55 -7.46 -5.91 -4.55 -10.51 -34.18 -30.96 -18.4 -28.81 -13.71 -15.8 -14.24 -31.46 -18.7 -22.33 -17.41 -7.78 -18.48 -36.12 -50.13 -14.1 -28.3 -46.86 -44.88 -34.29 -13.04 -5.83 -37.72 -40.75 -29.83 -25.93 -48.71 -37.36 -34.59 -27.9 -37.88 -17.35 -54.08 -28.19 -29.99 -22.33 -30.79 -20.71 -44.96 -28.17 -16.47 -66.15 -26.95 -29.18 -32.99 -11.42 -15.77 -11.95 -10.77 -31.75 -23.89 -24.66 -37.92 -22.6 -35.34 -16.4 -13.8 -14.71 -33.76 -20.35 -15.27 -30.89 -24.02 -18.36 -24.66 -24.42 -16.84 -28.37 -20.12 -33.59 -25.31 -4.99 -NA -42.1 -10.01 -8.17 -11.7 -8.79 -9.2 -14.42 -13.59 -13.25 -12.9 -18.59 -18.59 -NA -NA -8.81 -3.77 -16.97 -24.4 -43.69 -45.68 -59.74 -35.17 -42.2 -31.01 -32.06 -25.47 -15.48 -9.86 -36.36 -34.08 -28.76 -50.79 -36.12 -42.65 -16.4 -17.69 -12.86 -15.44 -37.93 -32.29 -36.79 -28.72 -33.54 -24.46 -40.56 -29.83 -42.12 -22.06 -23.86 -34.16 -25.03 -43.76 -43.82 -34.54 -23.29 -22.93 -12.61 -16.67 -17.96 -10 -12.55 -21.89 -10.88 -15.55 -31.68 -30.61 -29.37 -29.14 -39.23 -37.28 -33.8 -46.21 -56.2 -41.73 -49.1 -48.15 -50.47 -37.02 -43.6 -32.74 -43.83 -39.69 -24.35 -44.67 -54.96 -44.68 -34.42 -41.63 -26.44 -25.01 -53.5 -68.71 -33.57 -23.12 -17.13 -55.71 -42.8 -35.41 -26.6 -29.62 -27.63 -36.42 -23.67 -19.39 -17.26 -12.24 -16.19 -13.14 -6.18 -11.16 -23.22 -30.55 -40.04 -38.27 -17.84 -44.21 -41.18 -48.19 -52.56 -51.06 -57.44 -46.71 -44.08 -43.63 -47.74 -43.19 -56.37 -45.71 -32.05 -43.17 -36.42 -33.96 -20.54 -19.47 -24.54 -24.63 -27.36 -25.6 -26.74 -22.87 -26.1 -NA -14.87 -12.82 -6.9 -10.46 -10.6 -15.03 -29.09 -25.83 -19.13 -13.15 -18.48 -18.17 -45.69 -29.49 -30.72 -28.37 -54.7 -20.55 -24.55 -21.67 -12.82 -15.61 -29.49 -27.43 -36.92 -16.97 -20.32 -18.14 -21.49 -14.23 -13.2 -11.39 -19.87 -42.76 -36.63 -32.24 -25.65 -24.32 -32.38 -13.75 -21.95 -16.63 -19.64 -9.71 -10.43 -24.09 -13.37 -12.23 -14.49 -9.94 -14.6 -15.86 -21.31 -21.7 -23.86 -14.09 -12.5 -8.05 -9.46 -8.45 -19.57 -26.18 -21.85 -20.9 -32.33 -20.61 -21.23 -21.29 -25.3 -19.25 -14.19 -19.37 -18.51 -14.44 -25.29 -16.97 -13.21 -8.29 -6.17 -11.17 -8.03 -14.43 -12.43 -18.48 -4.28 -6.48 -9.87 -10.65 -9.76 -15.31 -3.67 -11.91 -3.42 -5.9 -7.09 -11.62 -3.82 -4.86 -5.38 -6.9 -20.65 -14.73 -35.41 -12.24 -25.5 -28.53 -28.02 -27.41 -49.42 -21.98 -35.56 -27.19 -20.98 -24.97 -30.03 -37.25 -41.12 -42.61 -54.23 -39.75 -23.43 -26.51 -36.24 -13.27 -21.8 -15.46 -19.26 -41.67 -24.3 -24.97 -36.93 -17.67 -13.88 -17.83 -23.35 -16.11 -17.59 -25.08 -37 -27.21 -44.29 -39.49 -32.93 -22.22 -28.76 -20.09 -9.11 -14.79 -8.09 -17.22 -15.79 -11.82 -15.39 -12.44 -19.9 -8.55 -6.44 -19.35 -16.48 -31.87 -18.49 -37.04 -21.54 -31.35 -36.23 -28.27 -12.76 -14.95 -26.23 -17.85 -13.85 -12.68 -18.66 -11.65 -27.42 -20.83 -18.15 -12.85 -10.08 -19.85 -23.02 -19.31 -9.87 -7.41 -23.56 -30.09 -29.11 -32.79 -NA -33.16 -26.5 -30.5 -35.15 -23.76 -28.74 -16.63 -22.56 -33.82 -9.11 -23.49 -28.67 -19.17 -23.66 -13.56 -17.16 -20.76 -14.59 -27.61 -26.4 -21.41 -14.86 -14.93 -41.05 -44.18 -36.77 -38.58 -34.37 -64.2 -46.58 -46.6 -36.13 -32.86 -38.28 -34.14 -29.13 -30.26 -40.26 -40.4 -40.48 -33.74 -7.9 -34.87 -22.85 -9.73 -10.57 -10.8 -8.83 -28.91 -26.82 -19.64 -11.1 -37.42 -40.36 -44.19 -44.82 -46.18 -38.55 -41.37 -47.95 -45.56 -38.89 -59.53 -40.14 -49.91 -35.45 -48.28 -39.44 -49.87 -46.78 -42.76 -28.4 -40.73 -52.22 -60.61 -46.05 -47.03 -74.67 -43.72 -32.71 -46.32 -46.15 -35.56 -61.64 -34.99 -37.94 -27.24 -46.14 -42.94 -46.91 -50.49 -25.4 -37.96 -38.99 -40.9 -19.05 -5.81 -18.72 -14.76 -21.72 -31.22 -9.9 -18.98 -31.48 -9.51 -11.79 -22.6 -21.69 -30.44 -24.11 -17.75 -13.89 -20.14 -23.74 -18.5 -25.38 -26.89 -20.54 -38.18 -38.34 -40.37 -41.76 -27.63 -39.69 -56.12 -40.36 -33.85 -43.01 -25.48 -29.5 -32.21 -28.4 -46.96 -44.25 -53.27 -38.13 -37.4 -34.52 -33.15 -32.54 -28.15 -27.75 -43.28 -31.53 -36.75 -27.8 -48.61 -42.71 -36.7 -35.67 -48.64 -37.98 -50.22 -40.72 -55.89 -53.39 -35.52 -37.03 -29.51 -40.94 -46.51 -51.17 -44.51 -40.57 -54.59 -44.61 -27.51 -28.04 -41.1 -45.3 -52.72 -30.6 -55.34 -62.39 -41.86 -48.05 -46.99 -49.13 -56.52 -58.01 -60.49 -48.62 -54.3 -58.8 -54.86 -51.13 -44.59 -58.58 -41.27 -33.44 -38.06 -26.35 -31.87 -35.92 -34.5 -28.6 -36.52 -43.05 -39.09 -56.35 -55.68 -59.5 -66.66 -42.48 -49.25 -59.46 -62.38 -61.33 -61.37 -65.32 -49.17 -41.62 -44.43 -48.62 -50.63 -48.69 -45.54 -47 -48.02 -49.03 -41.63 -35.47 -32.89 -35.86 -54.83 -15.41 -24.32 -36.51 -46.09 -39.49 -35.93 -43.29 -53.05 -29.28 -48.35 -36.35 -20.63 -31.8 -21.79 -43.06 -32.03 -35.39 -29.57 -44.77 -44.09 -46.31 -37.92 -20.13 -26.47 -22.41 -34.98 -56.57 -42 -18.59 -22.35 -13.53 -19.64 -21.56 -17.35 -38.21 -22.28 -25.55 -24.35 -11.87 -27.19 -31 -16.74 -14.53 -17.47 -28.58 -24.51 -29.2 -17.79 -14.31 -16.55 -29.08 -20.88 -21.85 -42.88 -50.67 -22.03 -13.54 -12.63 -20.56 -37.1 -47.94 -49.33 -20.4 -22.71 -14.34 -17.48 -16.85 -18.2 -16.29 -16.84 -20.21 -18.31 -13.83 -49.13 -41.33 -43.01 -22.54 -25.51 -30.65 -15.62 -45.97 -40.36 -20.16 -26.47 -25.89 -35.62 -28.12 -30.99 -32.18 -25.73 -22.53 -20.47 -22.05 -30.83 -26.25 -15.48 -18.72 -23.19 -22.6 -34.9 -30.21 -40.27 -16.9 -22.81 -17.77 -23.77 -16.06 -14.96 -13.08 -19.13 -16.06 -17.44 -18.61 -18.55 -15.89 -18.81 -29.24 -34.09 -26.77 -20.58 -22.32 -14.05 -25.72 -25.49 -22.54 -30.65 -18.53 -27.12 -13.99 -25.94 -20.84 -25.99 -27.73 -11.56 -12.33 -14.53 -28.96 -44.32 -31.88 -42.07 -30.97 -45.66 -33.42 -28.97 -28.75 -27.11 -NA -62.13 -66.69 -33.47 -23.79 -33.68 -6.02 -NA -NA -6.98 -13.21 -13.66 -22.77 -19.82 -18.09 -12.76 -22.7 -10.2 -11.66 -9.09 -8.47 -14.44 -18.96 -11.26 -23.81 -37.28 -19.03 -19.8 -8.79 -6.31 -10.21 -19.48 -39.05 -42.42 -22.9 -30.63 -36.46 -46.22 -44.82 -48.88 -30.76 -30.94 -25.98 -33.31 -35.25 -29.47 -33.76 -31.05 -31.72 -40.93 -49.26 -31.29 -18.77 -24.07 -20.49 -34.5 -26.59 -20.18 -43.74 -38.03 -29.5 -35.08 -32.02 -23.27 -21.95 -28.68 -18.99 -38.36 -27.56 -20.96 -22.07 -30.82 -26.72 -30.96 -19.61 -17.28 -27.87 -26.4 -21.85 -18.01 -18.73 -22.82 -50 -45.52 -40.09 -43.21 -37.18 -52.34 -53.07 -50.35 -48.78 -65.81 -44.61 -51.5 -NA -54.03 -60.44 -43.75 -37.42 -18.49 -17.58 -16.54 -23.83 -31.61 -41.48 -48.6 -61.14 -62.51 -47.28 -33.15 -36.85 -32.51 -NA -22.82 -38.55 -25.67 -26.88 -9.38 -21.17 -NA -NA -28.03 -27.08 -16.95 -29.17 -11.98 -7.46 -7.32 -3.94 -6.43 -4.07 -10.13 -9.15 -6.28 -13.33 -7.82 -5.79 -12.02 -10.79 -7.16 -13.04 -14.32 -6.8 -4.58 -5.87 -3.74 -8.74 -3.38 -7.14 -3.61 -4.08 -14.67 -7.97 -9.84 -4.06 -1.67 -14.25 -5.92 -8.54 -6.58 -5.13 -5.78 -6.02 -3.2 -6.25 -7.4 -4.48 -6.85 -28.64 -15.16 -16.94 -9.43 -7.66 -14.85 -6.36 -8.4 -9.92 -11.97 -19.09 -15.16 -13.28 -10.16 -13.69 -13.55 -12.78 -18.32 -20.86 -28.65 -22.98 -14.42 -15.14 -11.29 -10.06 -8.26 -8.24 -5.22 -15.13 -22.6 -15.98 -27.72 -23.69 -25.15 -21.57 -25.58 -27.18 -9.39 -9.7 -31.68 -17.18 -29.23 -32.34 -25.46 -20.19 -21.79 -15.82 -18.22 -12.34 -10.39 -20.24 -14.86 -34.78 -13.39 -20.58 -25.19 -12.28 -25.27 -26.43 -10.32 -8.73 -5.71 -5.28 -6.88 -17.71 -20.92 -15.22 -11.61 -15.59 -19.89 -5.63 -6.4 -6.66 -8.2 -7.3 -19.11 -7.97 -6.93 -NA -NA -27.41 -29.24 -25.25 -33.92 -39.83 -28 -17.13 -33.81 -45.66 -29.31 -29.2 -33.69 -31.16 -30.12 -25.73 -32.35 -34.61 -40.93 -31.47 -29.82 -34 -24.04 -32.1 -27.86 -34.07 -6.95 -7.91 -5.93 -6.83 -12.36 -NA -47.66 -47.42 -49.07 -47.45 -47.31 -31.22 -37.35 -34.82 -37.87 -43.5 -35.44 -26.43 -27.79 -28.81 -38.59 -43.98 -52.53 -51.3 -43.62 -40.11 -26.42 -17.65 -27.22 -26.54 -40.96 -32.09 -31.88 -39.48 -47.05 -33.42 -26.16 -26.76 -30.19 -34.97 -42.77 -38.76 -28.6 -21.39 -11.82 -33.88 -17.52 -14.97 -30.28 -33.31 -8.78 -9.29 -15.3 -14.68 -11.28 -7.96 -7.87 -9.67 -8.09 -14.45 -14.34 -19.42 -12.91 -16.06 -18.15 -14.42 -9.87 -9.92 -11.96 -8.39 -27.7 -16.96 -28.66 -28.87 -10.65 -23.7 -23.23 -27.9 -14.55 -30.47 -19.39 -26.58 -20.35 -31.03 -40.7 -49.87 -34.43 -20.88 -18.26 -14.41 -23.25 -11.71 -18.35 -31.9 -23.69 -23.46 -25.52 -12.85 -17.45 -30.92 -13.33 -15.71 -21.58 -6.29 -6.01 -12.03 -5.27 -18.04 -12.4 -28.03 -32.1 -25.07 -35.24 -36.34 -46.67 -42.53 -34.79 -24.25 -24.21 -48.46 -36.52 -34.71 -22.45 -28.73 -33.02 -21.86 -43.22 -9.9 -10.71 -13.4 -13.2 -5.66 -10.01 -6.68 -9.37 -11.46 -11.98 -18.06 -28.73 -17.41 -26.63 -13.75 -28.3 -11 -14.79 -15.82 -13.23 -10.67 -20.15 -16.66 -5.47 -13.4 -5.44 -6.53 -12.01 -15.37 -9 -5.71 -3.07 -7.62 -7.55 -14.48 -8.58 -10.41 -4.44 -8.01 -13.84 -7.1 -13.85 -10.49 -10.74 -15.37 -10.3 -14.74 -4.21 -8.24 -8.34 -4.14 -20.74 -21.19 -12.99 -5.27 -6.02 -8.68 -4.07 -3.56 -5.82 -6 -6.4 -4.46 -8.25 -8.29 -9.51 -5.05 -4.45 -10.71 -3.99 -2.89 -10.1 -6.18 -12 -10.03 -15.99 -4.02 -15.25 -13.02 -13.46 -7.57 -11.05 -5.31 -7.08 -5.46 -4.23 -9.62 -16.73 -9.84 -17.56 -37.31 -13.06 -26.05 -18.19 -16.9 -32.63 -14.9 -19.88 -12.28 -12.47 -13.85 -17.3 -19.72 -24.08 -22.4 -21.5 -23.35 -37.65 -10.2 -12.67 -18.16 -16.65 -16.84 -16.48 -17.26 -24.94 -13.9 -6.48 -13.6 -24.89 -18.69 -25.22 -24.85 -13.49 -15.97 -23.89 -4.2 -11.66 -16.78 -9.4 -12.39 -22.08 -18.43 -22.44 -14.21 -9.41 -23.87 -17.15 -21.17 -22.45 -15.55 -16.51 -21.45 -24.72 -18.75 -19.73 -11.84 -23.9 -18.18 -12.3 -3.96 -21.85 -14.94 -10.2 -8.1 -17.51 -10.41 -12.24 -12.33 -6.71 -5.84 -7.24 -5.25 -22.55 -30.49 -12.45 -12.47 -18.18 -11.86 -10.94 -10 -20.86 -11.17 -6.5 -16.52 -30 -14.52 -14.44 -8.96 -8.43 -25.55 -15.51 -30.39 -24.24 -29.43 -14.25 -21.66 -19 -27.81 -25.02 -31.1 -13.35 -11.43 -18.6 -16.72 -24.67 -21.82 -4.67 -26.46 -20.67 -9.75 -33.29 -27.72 -29.46 -11.86 -8.84 -26.53 -18.57 -17.51 -11.93 -9.6 -12.78 -15.76 -13.96 -8.69 -5.76 -5.16 -10.17 -15.71 -13.58 -18.24 -32.34 -6.04 -6.06 -8.84 -4.27 -17.18 -8.74 -10.8 -20.72 -8.98 -14.52 -2.94 -42.86 -40.71 -15.95 -21.69 -9.42 -14.47 -13.63 -16.95 -23.09 -29.69 -18.85 -10.15 -15.5 -19.08 -18.66 -27.82 -24.94 -24.1 -16.4 -12.91 -30.07 -20.78 -22.9 -24.26 -30.83 -26.41 -29.83 -30.12 -39.3 -41.16 -6.67 -7.29 -9.02 -7.27 -4.45 -5.29 -3.29 -10.02 -6.97 -8.89 -10.63 -9.53 -10.18 -10.23 -15.69 -13.68 -10.11 -13.47 -10.12 -11.7 -21.14 -6.79 -13.93 -19.17 -20.11 -18.6 -14.23 -6.8 -12.25 -10.52 -9.23 -9.1 -22.22 -10.61 -4.92 -7.03 -6.39 -36.74 -28.35 -27.87 -40.37 -50.63 -30.26 -36.99 -28.61 -5.01 -4.04 -6.25 -3.27 -4.99 -17.08 -24.02 -28.44 -10.8 -4.13 -4.59 -1.65 -4.86 -6.8 -2.6 -5.39 -4.59 -13.77 -13.6 -13.68 -26.81 -28.59 -20.74 -27.56 -22.97 -25.38 -49.33 -40.26 -46.93 -50.51 -54.61 -44.54 -46.98 -21.46 -16.61 -15.15 -15.68 -19.47 -18.92 -29.64 -18.43 -27.11 -40.29 -30.12 -20.2 -22.03 -12.1 -14.12 -20.13 -28.5 -21.25 -19.06 -14.03 -12.83 -27.78 -33.51 -35.7 -29.44 -9.3 -6.21 -11.32 -7.49 -7.9 -5.6 -7.16 -5.57 -4.85 -5.67 -4.05 -10.27 -8.17 -7.52 -23.22 -20.45 -19.95 -21.82 -26.85 -12.01 -15.17 -9.64 -16.45 -16.62 -9.47 -11.32 -16.16 -18.65 -21.42 -19.03 -29.96 -8.66 -11.77 -12.09 -15.01 -13.52 -10.97 -15.38 -16.11 -10.86 -20.78 -13.45 -11.43 -16.27 -11.85 -21.17 -16.64 -16.81 -17.97 -15.29 -20.25 -3.4 -17.32 -19.91 -21.36 -40.57 -26.77 -42.61 -31.1 -15.9 -NA -NA -27.13 -45.77 -NA -77.87 -75.61 -41.91 -53.92 -48.99 -57.81 -86.65 -72.68 -63.38 -47.76 -32.95 -35.95 -16.68 -37.31 -42.82 -51.98 -48.86 -54.36 -57.23 -62.42 -63.29 -49.86 -64.08 -44 -63.16 -61.16 -62.75 -49.07 -38.31 -55.66 -42.03 -50.55 -34.97 -29.6 -40.71 -37.61 -38.09 -27.82 -51.78 -17.22 -32.15 -30.31 -25.5 -17.82 -22.95 -30.62 -24.18 -24.88 -34.06 -34.86 -44.58 -36.75 -39.01 -34.72 -34.28 -39.18 -35.67 -33.81 -36.11 -31.65 -39.71 -37.77 -39.69 -35.42 -32.03 -36.12 -34.47 -26.84 -56.55 -38.4 -57.84 -70.42 -56.35 -44.21 -23.43 -37.82 -9.77 -19.16 -27.42 -17.27 -13.49 -37.81 -32.97 -38.85 -13.96 -14.64 -19.75 -34.4 -30.09 -43.31 -51.46 -48.45 -58.46 -27.36 -34.26 -17.73 -22.39 -22.97 -29.49 -30.38 -25.84 -26.61 -25.1 -38.91 -35.01 -53.31 -50.97 -40.89 -38.32 -48.05 -42.78 -29.8 -25.14 -21.96 -39.91 -43.61 -52.13 -39.96 -56.42 -42.78 -46.8 -26.31 -33.39 -38.08 -29.48 -22.53 -16.85 -16.16 -13.32 -42.39 -31.31 -34.37 -31.13 -27.28 -22.44 -28.41 -33.5 -27.93 -27.96 -8.96 -21.56 -7.63 -24.21 -15.69 -18.86 -12.5 -10.44 -15.61 -5.45 -6.31 -16.21 -8.36 -15.73 -23.69 -7.24 -15.93 -7.29 -18.13 -11.78 -7.87 -14.15 -22.16 -16.14 -27.49 -17.97 -13.13 -NA -19.96 -13.11 -6.11 -13.82 -6.96 -8.44 -10.86 -9.81 -13.04 -14.86 -19.47 -24.64 -6.79 -17.24 -27.27 -18.05 -10.71 -12.63 -6.43 -8.89 -8.29 -6.64 -NA -10.27 -9.8 -28 -33.58 -12.57 -12.59 -22.19 -22.71 -35.79 -27.36 -34.33 -21.79 -24.04 -20.73 -29.68 -32.62 -30.15 -21.45 -24.92 -18.44 -20.61 -14.62 -20.87 -19.11 -17.98 -20.19 -20.33 -28.02 -47.38 -39.97 -46.09 -32.19 -13.63 -11.74 -12.54 -13.77 -13.03 -12.36 -9.2 -8.87 -7.52 -6.34 -16.17 -14.12 -16.33 -12.98 -16.25 -40.95 -26.79 -34.57 -24.37 -11 -9.55 -9.68 -15.3 -12.1 -12.56 -22.32 -11.12 -14.37 -13.27 -11.38 -5.19 -3.78 -3.8 -21.34 -32.62 -29.99 -42.22 -24.6 -9.72 -9.48 -19.3 -6.1 -5.18 -4.44 -5.8 -9.4 -16.9 -8.34 -19.38 -17.39 -21.12 -31.86 -25.11 -16.75 -12.91 -9.55 -11.31 -16.73 -7.01 -13.39 -8.47 -14.39 -6.99 -20.34 -15.97 -8.05 -17.83 -5.85 -2.25 -4.18 -6.39 -17.04 -9.62 -15.05 -4.41 -3.38 -2.04 -1.1 -3.36 -2.45 -1.35 -3.04 -2.17 -8.35 -30.07 -46.84 -40.37 -36.14 -27.02 -8.19 -11.75 -30.59 -39.94 -30.05 -16.08 -20.8 -20.96 -25.23 -7.66 -3.18 -5.73 -7.19 -5.68 -3.87 -6.27 -30.77 -32.1 -39.74 -41.22 -33.38 -7.47 -7.43 -7.97 -4.26 -12.46 -12.36 -5.14 -8.45 -5.07 -14.79 -9.94 -9.38 -12.29 -10.52 -7.69 -11.65 -NA -17.58 -12.57 -2.76 -13.32 -23.91 -14.48 -9.65 -2.73 -8.35 -11.45 -8.11 -25.18 -37.04 -31.83 -31.06 -22.81 -33.11 -18.97 -26.2 -9.89 -12.73 -7.31 -8.86 -2.46 -19.62 -22.36 -23.94 -5.13 -22.28 -16.14 -13.74 -8.93 -8.37 -9.19 -22.28 -14.76 -9.96 -14.02 -6.64 -28.53 -16.93 -7.93 -34.68 -31.21 -36.02 -26.42 -29.58 -24.99 -24.2 -23.7 -29.06 -36.59 -25.18 -29.05 -37.03 -36.9 -26.19 -44 -NA -18.8 -35.59 -26.92 -30.27 -30.11 -22.16 -14.48 -25.22 -15.67 -15.67 -19.48 -16.7 -5.05 -11.22 -14.77 -14.33 -8.69 -16.87 -10.71 -12.18 -17.97 -16.06 -15.77 -41.13 -16.11 -20.36 -6.78 -22.01 -NA -NA -37.37 -25.77 -26.05 -29.44 -18.06 -27.5 -28.87 -33.53 -33.75 -33.13 -28.09 -37.46 -26.32 -28.72 -37.79 -30.03 -37.31 -39.83 -47.58 -34.84 -20.46 -20.39 -21.5 -27.18 -16.01 -23.79 -15.39 -8.67 -14.16 -11.85 -18.74 -12.44 -8.06 -4.91 -15.36 -11.25 -8.19 -15.25 -13.94 -6.18 -5.07 -11.27 -5.23 -6.68 -9.66 -15.52 -10.96 -10.42 -11.11 -42.71 -18.85 -41.35 -26.63 -41.62 -35.11 -17.74 -18.63 -30.31 -18.71 -33.77 -36.08 -30.69 -35.15 -22.9 -32.47 -29 -23.61 -26.87 -26.98 -40 -28.91 -36.62 -26.49 -24.13 -23.72 -8.73 -7.21 -22.74 -16.18 -9.21 -11.85 -12.19 -12.25 -5.94 -17.7 -7.49 -6.49 -4.65 -3.06 -8.99 -6.03 -18.86 -23.82 -36.34 -33.69 -22.65 -22.88 -22.45 -22.36 -14.23 -25.37 -15.86 -47.93 -40.41 -28.29 -30.79 -24.25 -36.47 -39.35 -33.03 -40.45 -30.16 -14.1 -17.8 -19.92 -20.79 -25.75 -22.27 -24.36 -16.61 -18.46 -7.54 -7 -16.77 -7.3 -21.76 -10.29 -7.95 -17.44 -12.1 -43.42 -34.01 -16.93 -17.9 -23.73 -21.66 -26.74 -13 -21.32 -22.18 -19.72 -7.12 -16.06 -NA -23.34 -12.48 -20.21 -22.69 -8.47 -21.35 -16.45 -23.43 -26.65 -25.54 -34.61 -22 -26.81 -22.77 -23.25 -22.21 -14.76 -22.99 -20.74 -20.49 -13.28 -23.03 -36.03 -30.42 -23.89 -24.59 -25.59 -29.28 -18.17 -19.57 -16.83 -12.38 -17.85 -15.5 -23.01 -23.26 -10.86 -12.32 -12.37 -10.97 -11.99 -12.24 -9.29 -18.93 -10.85 -13.32 -11.13 -14.37 -13.99 -18.19 -17.97 -18.07 -13.2 -13.34 -14.47 -10.73 -6.48 -8.89 -9.64 -10.09 -13.06 -8.44 -10.67 -8.34 -9.32 -5.32 -4.19 -5.89 -4.8 -7.6 -3.72 -10.98 -3.83 -3.91 -1.31 -5.73 -10.59 -5.19 -4.5 -9.43 -4.56 -6.53 -12.49 -12 -10.51 -3.97 -3.53 -9.16 -11.47 -5.22 -12.16 -11.72 -16.21 -12.11 -12.06 -11.41 -5.5 -8.35 -6.15 -4.1 -9.55 -10.84 -4.27 -9.16 -12.15 -14.81 -13.04 -11.01 -14.28 -17.26 -11.03 -17.2 -19.27 -17.62 -29.44 -27.92 -13.67 -15.75 -11.29 -16.83 -13.65 -7.87 -12.79 -21.77 -10.52 -14.22 -23.32 -10.48 -20.01 -22.7 -16.45 -12.75 -5.79 -9.98 -6.79 -4.66 -14.53 -6.9 -4.2 -3.83 -7.35 -3.94 -3.17 -4.12 -8.84 -10.4 -15.5 -5.73 -6.43 -3.33 -8.67 -8.62 -5.69 -7.51 -10.99 -7.28 -9.07 -NA -6.71 -4.68 -7.06 -5.22 -4.72 -1.61 -6.07 -8.67 -4.48 -7.15 -2.9 -10.59 -5.89 -4.72 -5.65 -11.19 -6.85 -11.75 -14.55 -30.36 -13.56 -18.66 -12.81 -21.04 -16.41 -12.06 -16.54 -17.28 -15.02 -20.24 -5.45 -11.14 -22.06 -17.02 -9.96 -10.33 -17.24 -12.74 -21.11 -21.41 -17.4 -33.51 -8.79 -7.94 -15.22 -11.27 -19 -8.37 -12 -13.68 -11.56 -14.98 -37.99 -21.63 -14.78 -17.53 -14.61 -24.42 -25.7 -10.99 -19.09 -27.78 -28.68 -23.68 -18.41 -42.21 -55.28 -41.57 -16.11 -15 -6.25 -19.84 -16.27 -10.92 -15.32 -12.77 -20.48 -13.26 -9.92 -20.89 -10.83 -18.19 -29.89 -35.61 -43.09 -44.05 -38.81 -29.07 -33.52 -26.88 -8.99 -8.23 -7.79 -6.83 -6.21 -7.77 -13.77 -7.17 -8.58 -2.01 -6.92 -4.46 -7.12 -13.69 -15.8 -12.85 -16.48 -8.21 -11.2 -12.04 -5.77 -2.17 -12.71 -11.81 -7.24 -6.05 -4.6 -35.94 -17.02 -27 -23.04 -12.25 -32.33 -25.13 -21.6 -17.5 -25.64 -7.6 -16.62 -16.94 -10.69 -18.98 -14.67 -14.98 -6.78 -12.28 -18.65 -9.97 -33.27 -7.75 -24.56 -14.51 -24.66 -23.43 -10.31 -6.08 -12.31 -21.68 -21.17 -11.63 -27.66 -20.45 -6.26 -9.56 -12.97 -9.44 -25.3 -23.85 -23.7 -22.92 -27.99 -9.48 -10.91 -19.09 -17.33 -11.57 -12.69 -10.92 -21.24 -18.51 -18.28 -18.57 -17.18 -15.87 -16.31 -16.4 -15.5 -18.77 -29.51 -14.21 -11.37 -25.61 -20.83 -20.02 -19.51 -28.19 -12.66 -23.08 -14.72 -22.16 -33.15 -29.57 -22.73 -21.53 -29.77 -17.84 -18.31 -65.12 -48.52 -57.13 -41.93 -39.01 -41.92 -30.7 -30.48 -41.33 -40.13 -36.14 -22.35 -52.66 -38.38 -17.79 -42.35 -41.76 -32.45 -17.98 -22.35 -16.36 -16.12 -10.53 -10.29 -10.13 -15.01 -12.93 -14.66 -16.16 -15.21 -5.5 -9.37 -13.1 -18.88 -19.77 -9.14 -18.28 -24.64 -39.1 -46.89 -32.87 -41.67 -37.31 -34.6 -30.7 -31.62 -26.9 -19.44 -21.33 -34.56 -25.02 -17.79 -16.5 -20.48 -25.8 -14.9 -14.66 -18.69 -28.57 -15.33 -20.92 -8.27 -20.29 -8.23 -12.33 -11.91 -13.76 -NA -28.61 -18.2 -11.15 -23.9 -20.97 -9.07 -14.97 -22.08 -26.65 -18.13 -27.86 -36.89 -24.21 -23.74 -41.76 -NA -11.82 -9.77 -10.46 -9.1 -6.46 -6.69 -17.68 -16.24 -5.83 -17.92 -8.09 -18.31 -9.06 -13.91 -8.1 -16.89 -14.69 -30.63 -12.91 -14.47 -26.25 -13.45 -15.49 -13.71 -20.27 -7.56 -11.7 -13.24 -29.16 -11.62 -10.26 -15.71 -8.43 -13.75 -11.05 -22.32 -39.15 -11.71 -4.15 -4.92 -4.38 -4.96 -11.96 -12.84 -20.16 -24.25 -24.14 -14.53 -8.45 -12.12 -6.23 -9.02 -10.42 -8.23 -6.43 -15.18 -20.8 -22.71 -23.54 -18.61 -11.84 -14.35 -9.87 -26.18 -26.04 -24.4 -17.45 -12.88 -31.18 -24.6 -40.08 -38.43 -31.7 -15.21 -10.53 -5.73 -7.63 -7.16 -11.73 -12.95 -13.26 -10.87 -12.6 -14.13 -13.99 -8.01 -4.77 -22.8 -10.08 -12.26 -19.48 -8.69 -12.75 -16.82 -29.59 -12.89 -9.99 -5.46 -12.92 -31.03 -30.08 -33.27 -42.57 -41.05 -41.9 -44.08 -30.16 -48.02 -36.57 -23.3 -35.32 -31.36 -30.66 -23.16 -20.01 -21.51 -41.15 -31.44 -44.01 -35.24 -52.94 -33.21 -19.66 -31.89 -28.97 -29.18 -23.28 -26.64 -32.39 -31.66 -20.48 -22.46 -28.21 -26.51 -45.46 -37.82 -41.8 -46.97 -53.21 -50.2 -47.65 -40.18 -59.47 -56.85 -35.85 -54.44 -51.88 -40.45 -27.02 -69.16 -58.88 -54.79 -59.84 -39.61 -50.62 -45.91 -45.27 -35.87 -47.81 -30.87 -53.03 -41.37 -30 -44.14 -31.67 -45.96 -28.67 -30.02 -30.56 -38.57 -37.62 -54.87 -31.19 -34.62 -40.84 -38.35 -31.19 -51.96 -31.04 -33.25 -22.4 -75.31 -66.71 -48.09 -57 -43.75 -41.53 -23.91 -36.31 -23.81 -29.72 -32.34 -39.52 -40.99 -43.42 -45.4 -58.94 -28.24 -52.74 -22.99 -28.87 -21.05 -39.64 -22.74 -25.39 -19.48 -19.58 -17.22 -28.83 -35.8 -20.03 -31.58 -36.07 -26.75 -23.4 -13.82 -26.41 -17.21 -32.53 -27.35 -33.77 -30.15 -21.05 -23.75 -36.91 -8.76 -22.18 -11.66 -12.73 -15.4 -21.67 -48.97 -48.73 -48.05 -62.66 -43.9 -40.15 -59.97 -49.68 -47.26 -37.05 -38.63 -40.95 -59.01 -39.52 -50.06 -34.36 -33.27 -53.94 -49.98 -30.79 -44.35 -28.72 -35.81 -41.39 -40.3 -44.73 -43.79 -32.24 -22.41 -33.08 -27.64 -34.49 -36.71 -36.08 -28.41 -26.88 -30.47 -33.93 -28.35 -45.06 -54.31 -29.33 -37.36 -34.72 -39.17 -45.91 -42.73 -42.29 -42.03 -42.59 -23.84 -45.76 -59.19 -36.5 -35.87 -51.05 -44.96 -60.67 -54.62 -51.48 -60.26 -28.98 -39.72 -31.51 -43.38 -49.18 -47.01 -46.49 -50.62 -47.4 -NA -59.12 -51.89 -61.52 -54.73 -42.65 -46.78 -19.01 -28.92 -19.16 -12.21 -11.78 -9.22 -24.46 -12.83 -27.44 -22.64 -NA -14.69 -30.6 -31.46 -17.6 -25.6 -25.46 -39.97 -37.58 -33.38 -19.57 -28.34 -11.48 -12.71 -10.42 -9.47 -16.49 -13.65 -13.5 -19.24 -6.13 -17.33 -NA -20.33 -32.11 -10.03 -12.32 -24.12 -25.82 -15.93 -24.86 -15.77 -13.47 -4.3 -6.4 -12.47 -9.56 -22.68 -30.68 -45.73 -44.32 -21.48 -16.32 -15.48 -21.77 -24.36 -34.55 -19.44 -27.75 -NA -19.9 -30.11 -38.81 -27.64 -23.01 -29.69 -21.16 -22.68 -25.8 -30.76 -28.37 -41.73 -25.14 -20.19 -25.56 -23.03 -20.79 -43.39 -37.69 -24.49 -23.72 -34.76 -28.42 -40.6 -32.25 -26.37 -48.18 -38.42 -35.44 -26.56 -54.1 -39.47 -42.5 -27.41 -25.99 -16.57 -10.2 -11.1 -17.53 -10.51 -14.5 -9.07 -6.73 -10.21 -27.88 -23.34 -30.78 -19.42 -10.75 -23.61 -14.29 -9.15 -7.68 -6.79 -14.01 -9.28 -17.97 -12.62 -5.31 -10.77 -16.99 -31.23 -6.09 -7.48 -21.14 -11.54 -22.6 -13.82 -9.9 -16.31 -19.08 -29.38 -26.11 -6.6 -9.1 -7.79 -11.49 -7.63 -6.33 -6.64 -14.24 -8.19 -5.6 -6.19 -9.1 -8.39 -18.42 -16.75 -13.16 -21.01 -13.4 -7.37 -9.74 -10.25 -37.11 -29.35 -13.57 -16.1 -29.75 -22.81 -23.17 -14.13 -20.16 -23.15 -18.69 -17.87 -15.3 -23.49 -25.55 -22.87 -25.8 -17.32 -17.43 -13.74 -18.62 -23.21 -14.32 -19.83 -38.16 -35.44 -15.56 -22.42 -51.33 -NA -49.37 -56.34 -34.11 -59.83 -45.33 -21.65 -16.96 -18.5 -14.48 -10.18 -25.27 -19.11 -7.52 -10.05 -11.41 -9.6 -11.62 -9.73 -21.62 -9.95 -13.28 -14.58 -31.69 -20.9 -18.21 -8.81 -34.04 -23.57 -24.29 -33.36 -14.92 -26.32 -33.15 -16.93 -13.52 -19.87 -19.24 -27.96 -22.41 -29.95 -14.06 -51.76 -31.99 -33.31 -39.38 -22.95 -49.2 -37.86 -27.6 -22.13 -21.59 -30.21 -18.67 -21.99 -11.69 diff --git a/modules/Functions/lab/Functions_Lab.Rmd b/modules/Functions/lab/Functions_Lab.Rmd index 661f8054..81ee2193 100644 --- a/modules/Functions/lab/Functions_Lab.Rmd +++ b/modules/Functions/lab/Functions_Lab.Rmd @@ -14,14 +14,12 @@ knitr::opts_chunk$set(echo = TRUE) Load all the libraries we will use in this lab. ```{r message=FALSE} -library(readr) -library(dplyr) -library(ggplot2) +library(tidyverse) ``` ### 1.1 -Create a function that takes one argument, a vector, and returns the sum of the vector and squares the result. Call it "sum_squared". Test your function on the vector `c(2,7,21,30,90)` - you should get the answer 22500. +Create a function that takes one argument, a vector, and returns the sum of the vector and then squares the result. Call it "sum_squared". Test your function on the vector `c(2,7,21,30,90)` - you should get the answer 22500. ``` # General format @@ -73,9 +71,7 @@ Create a new number `b_num` that is not contained with `nums`. Use your updated Read in the CalEnviroScreen from https://daseh.org/data/CalEnviroScreen_data.csv. Assign the data the name "ces". ```{r message = FALSE, label = '2.1response'} -ces <- read_csv("https://daseh.org/data/CalEnviroScreen_data.csv") -# If downloaded -# ces <- read_csv("CalEnviroScreen_data.csv") + ``` ### 2.2 @@ -86,9 +82,8 @@ We want to get some summary statistics on water contamination. Use `across` insi # General format data %>% summarize(across( - .cols = {vector or tidyselect}, - .fns = {some function}, - {additional arguments} + {vector or tidyselect}, + {some function} )) ``` @@ -99,14 +94,14 @@ data %>% ### 2.3 -Use `across` and `mutate` to convert all columns containing the word "Pctl" into proportions (i.e., divide that value by 100). **Hint**: use `contains()` to select the right columns within `across()`. Use a "function on the fly" to divide by 100 (`function(x) x / 100`). It will also be easier to check your work if you `select()` columns that match "Pctl". +Use `across` and `mutate` to convert all columns containing the word "Pctl" into proportions (i.e., divide that value by 100). **Hint**: use `contains()` to select the right columns within `across()`. Use an anonymous function ("function on the fly") to divide by 100 (`function(x) x / 100`). It will also be easier to check your work if you `select()` columns that match "Pctl". ``` # General format data %>% mutate(across( - .cols = {vector or tidyselect}, - .fns = {some function} + {vector or tidyselect}, + {some function} )) ``` @@ -118,16 +113,14 @@ data %>% ### P.2 - - -Use `across` and `mutate` to convert all columns starting with the string "PM" into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. **Hint**: use `starts_with()` to select the columns that start with "PM". Use a "function on the fly" to do a logical test if the value is greater than 10. +Use `across` and `mutate` to convert all columns starting with the string "PM" into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. **Hint**: use `starts_with()` to select the columns that start with "PM". Use an anonymous function ("function on the fly") to do a logical test if the value is greater than 10. ```{r P.2response} ``` -### P.3 +### P.3 Take your code from question 2.4 and assign it to the variable `ces_dat`. diff --git a/modules/Functions/lab/Functions_Lab.html b/modules/Functions/lab/Functions_Lab.html index 95978ffd..b8a6647e 100644 --- a/modules/Functions/lab/Functions_Lab.html +++ b/modules/Functions/lab/Functions_Lab.html @@ -356,15 +356,13 @@

Functions Lab

Part 1

Load all the libraries we will use in this lab.

-
library(readr)
-library(dplyr)
-library(ggplot2)
+
library(tidyverse)

1.1

Create a function that takes one argument, a vector, and returns the -sum of the vector and squares the result. Call it “sum_squared”. Test -your function on the vector c(2,7,21,30,90) - you should -get the answer 22500.

+sum of the vector and then squares the result. Call it “sum_squared”. +Test your function on the vector c(2,7,21,30,90) - you +should get the answer 22500.

# General format
 NEW_FUNCTION <- function(x, y) x + y 

or

@@ -388,8 +386,8 @@

1.3

Amend the function has_n from question 1.2 so that it takes a default value of 21 for the numeric argument.

-
-

1.4

+
+

P.1

Create a new number b_num that is not contained with nums. Use your updated has_n function with the default value and add b_num as the n argument @@ -398,12 +396,12 @@

1.4

Part 2

-
+

2.1

Read in the CalEnviroScreen from https://daseh.org/data/CalEnviroScreen_data.csv. Assign the data the name “ces”.

-
+

2.2

We want to get some summary statistics on water contamination. Use across inside summarize to get the sum total @@ -415,34 +413,40 @@

2.2

# General format
 data %>%
   summarize(across(
-    .cols = {vector or tidyselect},
-    .fns = {some function},
-    {additional arguments}
+    {vector or tidyselect},
+    {some function}
   ))
-
+

2.3

Use across and mutate to convert all columns containing the word “Pctl” into proportions (i.e., divide that value by 100). Hint: use contains() to -select the right columns within across(). Use a “function -on the fly” to divide by 100. It will also be easier to check your work -if you select() columns that match “Pctl”.

+select the right columns within across(). Use an anonymous +function (“function on the fly”) to divide by 100 +(function(x) x / 100). It will also be easier to check your +work if you select() columns that match “Pctl”.

+
# General format
+data %>%
+  mutate(across(
+    {vector or tidyselect},
+    {some function}
+  ))
+
-
-

2.4

+
+

Practice on Your Own!

+
+

P.2

Use across and mutate to convert all columns starting with the string “PM” into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. Hint: use starts_with() to select the -columns that start with “PM”. Use a “function on the fly” to do a -logical test if the value is greater than 10.

-
+columns that start with “PM”. Use an anonymous function (“function on +the fly”) to do a logical test if the value is greater than 10.

-
-

Practice on Your Own!

-
-

P.1

+
+

P.3

Take your code from question 2.4 and assign it to the variable ces_dat.

    diff --git a/modules/Functions/lab/Functions_Lab_Key.Rmd b/modules/Functions/lab/Functions_Lab_Key.Rmd index 8591cbf1..378c1f28 100644 --- a/modules/Functions/lab/Functions_Lab_Key.Rmd +++ b/modules/Functions/lab/Functions_Lab_Key.Rmd @@ -14,9 +14,7 @@ knitr::opts_chunk$set(echo = TRUE) Load all the libraries we will use in this lab. ```{r message=FALSE} -library(readr) -library(dplyr) -library(ggplot2) +library(tidyverse) ``` ### 1.1 @@ -104,45 +102,43 @@ We want to get some summary statistics on water contamination. Use `across` insi # General format data %>% summarize(across( - .cols = {vector or tidyselect}, - .fns = {some function}, - {additional arguments} + {vector or tidyselect}, + {some function} )) ``` ```{r 2.2response} ces %>% summarize(across( - .cols = contains("Water") & ends_with("Pctl"), - .fns = sum + contains("Water") & ends_with("Pctl"), + sum )) ces %>% summarize(across( - .cols = contains("Water") & ends_with("Pctl"), - .fns = sum, - na.rm = TRUE + contains("Water") & ends_with("Pctl"), + function(x) sum(x, na.rm = T) )) ``` ### 2.3 -Use `across` and `mutate` to convert all columns containing the word "Pctl" into proportions (i.e., divide that value by 100). **Hint**: use `contains()` to select the right columns within `across()`. Use a "function on the fly" to divide by 100 (`function(x) x / 100`). It will also be easier to check your work if you `select()` columns that match "Pctl". +Use `across` and `mutate` to convert all columns containing the word "Pctl" into proportions (i.e., divide that value by 100). **Hint**: use `contains()` to select the right columns within `across()`. Use an anonymous function ("function on the fly") to divide by 100 (`function(x) x / 100`). It will also be easier to check your work if you `select()` columns that match "Pctl". ``` # General format data %>% mutate(across( - .cols = {vector or tidyselect}, - .fns = {some function} + {vector or tidyselect}, + {some function} )) ``` ```{r 2.3response} ces %>% mutate(across( - .cols = contains("Pctl"), - .fns = function(x) x / 100 + contains("Pctl"), + function(x) x / 100 )) %>% select(contains("Pctl")) ``` @@ -151,15 +147,13 @@ ces %>% ### P.2 - - -Use `across` and `mutate` to convert all columns starting with the string "PM" into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. **Hint**: use `starts_with()` to select the columns that start with "PM". Use a "function on the fly" to do a logical test if the value is greater than 10. +Use `across` and `mutate` to convert all columns starting with the string "PM" into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. **Hint**: use `starts_with()` to select the columns that start with "PM". Use an anonymous function ("function on the fly") to do a logical test if the value is greater than 10. ```{r P.2response} ces %>% mutate(across( - .cols = starts_with("PM"), - .fns = function(x) x > 10 + starts_with("PM"), + function(x) x > 10 )) ``` @@ -176,8 +170,8 @@ Take your code from question 2.4 and assign it to the variable `ces_dat`. ces_dat <- ces %>% mutate(across( - .cols = starts_with("PM"), - .fns = function(x) x > 10 + starts_with("PM"), + function(x) x > 10 )) %>% filter(ApproxLocation != "Oakland") diff --git a/modules/Functions/lab/Functions_Lab_Key.html b/modules/Functions/lab/Functions_Lab_Key.html index 8b09e46f..6c7f0721 100644 --- a/modules/Functions/lab/Functions_Lab_Key.html +++ b/modules/Functions/lab/Functions_Lab_Key.html @@ -356,9 +356,7 @@

    Functions Lab - Key

    Part 1

    Load all the libraries we will use in this lab.

    -
    library(readr)
    -library(dplyr)
    -library(ggplot2)
    +
    library(tidyverse)

    1.1

    Create a function that takes one argument, a vector, and returns the @@ -444,14 +442,13 @@

    2.2

    # General format
     data %>%
       summarize(across(
    -    .cols = {vector or tidyselect},
    -    .fns = {some function},
    -    {additional arguments}
    +    {vector or tidyselect},
    +    {some function}
       ))
    ces %>%
       summarize(across(
    -    .cols = contains("Water") & ends_with("Pctl"),
    -    .fns = sum
    +    contains("Water") & ends_with("Pctl"),
    +    sum
       ))
    ## # A tibble: 1 × 3
     ##   DrinkingWaterPctl GroundwaterThreatsPctl ImpWaterBodiesPctl
    @@ -459,21 +456,9 @@ 

    2.2

    ## 1 NA 304029. 256802.
    ces %>%
       summarize(across(
    -    .cols = contains("Water") & ends_with("Pctl"),
    -    .fns = sum,
    -    na.rm = TRUE
    +    contains("Water") & ends_with("Pctl"),
    +    function(x) sum(x, na.rm = T)
       ))
    -
    ## Warning: There was 1 warning in `summarize()`.
    -## ℹ In argument: `across(...)`.
    -## Caused by warning:
    -## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
    -## Supply arguments directly to `.fns` through an anonymous function instead.
    -## 
    -##   # Previously
    -##   across(a:b, mean, na.rm = TRUE)
    -## 
    -##   # Now
    -##   across(a:b, \(x) mean(x, na.rm = TRUE))
    ## # A tibble: 1 × 3
     ##   DrinkingWaterPctl GroundwaterThreatsPctl ImpWaterBodiesPctl
     ##               <dbl>                  <dbl>              <dbl>
    @@ -484,20 +469,20 @@ 

    2.3

    Use across and mutate to convert all columns containing the word “Pctl” into proportions (i.e., divide that value by 100). Hint: use contains() to -select the right columns within across(). Use a “function -on the fly” to divide by 100 (function(x) x / 100). It will -also be easier to check your work if you select() columns -that match “Pctl”.

    +select the right columns within across(). Use an anonymous +function (“function on the fly”) to divide by 100 +(function(x) x / 100). It will also be easier to check your +work if you select() columns that match “Pctl”.

    # General format
     data %>%
       mutate(across(
    -    .cols = {vector or tidyselect},
    -    .fns = {some function}
    +    {vector or tidyselect},
    +    {some function}
       ))
    ces %>%
       mutate(across(
    -    .cols = contains("Pctl"),
    -    .fns = function(x) x / 100
    +    contains("Pctl"),
    +    function(x) x / 100
       )) %>%
       select(contains("Pctl"))
    ## # A tibble: 8,035 × 23
    @@ -530,12 +515,12 @@ 

    P.2

    columns starting with the string “PM” into a binary variable: TRUE if the value is greater than 10 and FALSE if less than or equal to 10. Hint: use starts_with() to select the -columns that start with “PM”. Use a “function on the fly” to do a -logical test if the value is greater than 10.

    +columns that start with “PM”. Use an anonymous function (“function on +the fly”) to do a logical test if the value is greater than 10.

    ces %>%
       mutate(across(
    -    .cols = starts_with("PM"),
    -    .fns = function(x) x > 10
    +    starts_with("PM"),
    +    function(x) x > 10
       ))
    ## # A tibble: 8,035 × 68
     ##     ...1 CensusTract CaliforniaCounty   ZIP Longitude Latitude ApproxLocation
    @@ -575,8 +560,8 @@ 

    P.3

    ces_dat <-
       ces %>%
       mutate(across(
    -    .cols = starts_with("PM"),
    -    .fns = function(x) x > 10
    +    starts_with("PM"),
    +    function(x) x > 10
       )) %>%
       filter(ApproxLocation != "Oakland")