From 9ac465af85acdac9327eb1aa3f5869d1be0485ff Mon Sep 17 00:00:00 2001 From: Kyle Belanger Date: Thu, 12 Oct 2023 09:05:03 -0400 Subject: [PATCH] add more posts --- _site/blog.html | 84 +- _site/listings.json | 2 + .../creating-a-distill-blog.html | 504 ++++++++++++ ...idytuesday-2021-week-6-hbcu-enrolment.html | 769 ++++++++++++++++++ .../figure-html/unnamed-chunk-10-1.png | Bin 0 -> 39079 bytes .../figure-html/unnamed-chunk-14-1.png | Bin 0 -> 27950 bytes .../figure-html/unnamed-chunk-15-1.png | Bin 0 -> 37872 bytes _site/search.json | 37 +- .../creating-a-distill-blog.qmd | 63 ++ .../104.10.xlsx | Bin 0 -> 53341 bytes ...tidytuesday-2021-week-6-hbcu-enrolment.qmd | 362 +++++++++ 11 files changed, 1813 insertions(+), 8 deletions(-) create mode 100644 _site/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html create mode 100644 _site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html create mode 100644 _site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment_files/figure-html/unnamed-chunk-10-1.png create mode 100644 _site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment_files/figure-html/unnamed-chunk-14-1.png create mode 100644 _site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment_files/figure-html/unnamed-chunk-15-1.png create mode 100644 posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.qmd create mode 100644 posts/2021-02-26_tidytuesday-hbcu-enrollment/104.10.xlsx create mode 100644 posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.qmd diff --git a/_site/blog.html b/_site/blog.html index f8ff882..44f9f0a 100644 --- a/_site/blog.html +++ b/_site/blog.html @@ -156,7 +156,7 @@ ul.task-list li input[type="checkbox"] { +
Categories
All (8)
Distill (1)
TidyTuesday (1)
@@ -169,7 +169,77 @@ ul.task-list li input[type="checkbox"] {
-
+
+
+

+
+ + +
+
+
+

+
+ + +
+
@@ -197,7 +267,7 @@ Kyle Belanger
-
+
@@ -225,7 +295,7 @@ Kyle Belanger
-
+
@@ -253,7 +323,7 @@ Kyle Belanger
-
+
@@ -281,7 +351,7 @@ Kyle Belanger
-
+
@@ -309,7 +379,7 @@ Kyle Belanger
-
+
diff --git a/_site/listings.json b/_site/listings.json index 612f1e1..881170c 100644 --- a/_site/listings.json +++ b/_site/listings.json @@ -2,6 +2,8 @@ { "listing": "/blog.html", "items": [ + "/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html", + "/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html", "/posts/2020-07-25_diabetes-data-collection-and-cleaning/diabetes-in-rural-north-carolina-data-collection-and-cleaning.html", "/posts/2020-06-22_excel-data-multiple-headers/importing-excel-data-with-multiple-header-rows.html", "/posts/2020-02-13_basic-who-TB-data/basic-exploration-of-who-tuberculosis-data.html", diff --git a/_site/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html b/_site/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html new file mode 100644 index 0000000..3049741 --- /dev/null +++ b/_site/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html @@ -0,0 +1,504 @@ + + + + + + + + + + + +Kyle Belanger - Converting From Blogdown to Distill + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Converting From Blogdown to Distill

+

A meta post on transferring from a blogdown to distill blog site

+
+
Distill
+
+
+
+ + +
+ +
+
Author
+ +
+ +
+
Published
+
+

January 12, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + +
+

Authors Note

+

I have since converted this blog to a quarto blog, but am leaving this post up in case anyone finds it useful

+
+
+

Introduction

+

This metapost describes changing my personal blog from a blogdown site to a distill blog site. I will not be going over starting a site from scratch as there are already several great resources for doing this. What I will be going over is some of the challenges and some of the changes and tips I have found. If you are looking to start a site from scratch, check out these great resources:

+
    +
  • The Distill for Rmarkdown page on creating a blog
  • +
  • This excellent post from Shamindra Shrotriya on setting up a blog
  • +
  • This post from the Mockup blog
  • +
+

This last post goes into some of the pros and cons of using distill instead of blogdown. If you want simplicity, go with distill without much customization. If you want the ability for a lot of customization and don’t mind being frustrated with Hugo, go with blogdown.

+
+
+

Challenges

+

The good thing about switching from blogdown to distill was I had very few challenges! The distill documentation, combined with the two posts I listed, helped me with most of my troubles. The only issue I ran into was distill contains a function called import_post(), which according to the docs, only needs a published URL to work. I could never solve why, but I could not pull in the posts from my old blogdown site. This wasn’t a big deal as I had the original rmarkdown documents, but this could pose an issue if you didn’t.

+
+
+

Going Outside the Box

+
+

Code Folding

+

When I converted my blog on 12/30/2020, code folding was not included as an option by default in distill. At that time, an excellent package called Codefolder added the functionality. Since going live with the blog, code folding has been added to distill.1 Code folding is available for either the whole document or individual code sections. The default caption is “Show Code”, but instead of typing code_folding=TRUE, you can provide a string to change the caption.

+
+
# Some awesome code 
+# That does awesome things
+
+
+
+

Customizing the Home Page

+

By default, a distill blog’s home page will be the blog index page. I chose to edit my home page to be a landing page for myself and then have the blog index as a separate page. When creating a new blog, this is the default YAML header for your index page.

+
---
+title: "New Site"
+site: distill::distill_website
+listing: posts
+---
+

The critical piece here is the line site: distill::distill_website. This line is what is needed to render the website. For my home page, I decided to use the package Postcard, which is used to generate simple landing pages. I won’t go into every step as there is already a great post by Alison Hill on how to do that. However, I will point out the most crucial part of the new index page the YAML header needs to contain these two lines.

+
output:
+  postcards::trestles
+site: distill::distill_website
+
+
+
+

Final Thoughts

+

I have enjoyed the simplicity of Distill. While not nearly as customizable as blogdown, getting a blog site up and running in under an hour is pretty lovely. I hope to keep exploring what Distill has to offer and keep posting my updates!

+ + +
+ + +

Footnotes

+ +
    +
  1. Note that as of publishing, code folding is only available in the development version of distill↩︎

  2. +
+

Reuse

Citation

BibTeX citation:
@online{belanger2021,
+  author = {Belanger, Kyle},
+  title = {Converting {From} {Blogdown} to {Distill}},
+  date = {2021-01-12},
+  langid = {en}
+}
+
For attribution, please cite this work as:
+Belanger, Kyle. 2021. “Converting From Blogdown to +Distill.” January 12, 2021. +
+ +
+ + + + \ No newline at end of file diff --git a/_site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html b/_site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html new file mode 100644 index 0000000..79afc80 --- /dev/null +++ b/_site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html @@ -0,0 +1,769 @@ + + + + + + + + + + + +Kyle Belanger - TidyTuesday 2021 Week 6: HBCU Enrollment + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

TidyTuesday 2021 Week 6: HBCU Enrollment

+

TidyTuesday 2021 Week 6: HBCU Enrollment. Posts looks at tidying the data ,as well as making some graphs about the data.

+
+
TidyTuesday
+
+
+
+ + +
+ +
+
Author
+ +
+ +
+
Published
+
+

February 26, 2021

+
+
+ + +
+ + +
+ + +
+ + + +
+ + + + +
+

Introduction

+

Recently I was struggling to find a data project to work on, I felt a bit stuck with some of my current projects, so I begun to scour the internet to find something to work on. I stumbled upon (TidyTuesday)[https://github.com/rfordatascience/tidytuesday] a weekly project where untidy data is posted from various sources, for the goal of practicing cleaning and visualizing. There is not right or wrong answers for TidyTuesday, this was exactly what I was looking for! This week (well by the time this was posted, a few weeks ago) the data set was about Historically Black Colleges and Universities. Within the posted data there were a few different data sets, I chose to work with the set dealing with High school Graduation rates, throughout this post I will explain my steps for cleaning and then present a few different graphs. It should also be noted that in the first section my code blocks will build upon themselves, so the same code will be duplicated as I add more steps to it.

+
+
+

Load Data

+

In this first block we will load some required libraries as well as load in the raw data. This dataset contains data for Highschool graduation rates by race. One thing to point out here is the use of import::from(), will its use here is a bit overkill, it was more for my practice. In this case I am importing the function %nin from the Hmisc package, which in the opposite of the function %in% from base R.

+
+
library(dplyr)
+library(ggplot2)
+
+import::from(Hmisc, `%nin%`)
+
+hs_students_raw <- readxl::read_xlsx("104.10.xlsx", sheet = 1)
+
+glimpse(hs_students_raw)
+
+
Rows: 48
+Columns: 19
+$ Total                                                             <dbl> 1910…
+$ `Total, percent of all persons age 25 and over`                   <dbl> 13.5…
+$ `Standard Errors - Total, percent of all persons age 25 and over` <chr> "(—)…
+$ White1                                                            <chr> "—",…
+$ `Standard Errors - White1`                                        <chr> "(†)…
+$ Black1                                                            <chr> "—",…
+$ `Standard Errors - Black1`                                        <chr> "(†)…
+$ Hispanic                                                          <chr> "—",…
+$ `Standard Errors - Hispanic`                                      <chr> "(†)…
+$ `Total - Asian/Pacific Islander`                                  <chr> "—",…
+$ `Standard Errors - Total - Asian/Pacific Islander`                <chr> "(†)…
+$ `Asian/Pacific Islander - Asian`                                  <chr> "—",…
+$ `Standard Errors - Asian/Pacific Islander - Asian`                <chr> "(†)…
+$ `Asian/Pacific Islander - Pacific Islander`                       <chr> "—",…
+$ `Standard Errors - Asian/Pacific Islander - Pacific Islander`     <chr> "(†)…
+$ `American Indian/\r\nAlaska Native`                               <chr> "—",…
+$ `Standard Errors - American Indian/\r\nAlaska Native`             <chr> "(†)…
+$ `Two or more race`                                                <chr> "—",…
+$ `Standard Errors - Two or more race`                              <chr> "(†)…
+
+
+

Now we are going to start cleaning the data. First I am going to filter for years 1985 and up, prior to this year the data set is a bit spardic, so to keep it clean I am only going to look at 1985 and up. There are also 3 odd years (19103,19203,19303) that I am not sure what those are so I will remove that data as well.

+
+
hs_students <- hs_students_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303))
+
+

Next I am going to convert all columns to be numeric, because of some blanks in the original import all of the columns read in as characters instead of numeric.

+
+
hs_students <- hs_students_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303)) %>% 
+  mutate(across(everything(), as.numeric))
+
+

Next I am going to rename the columns. First I rename the column Total, into year, as this column holds the year! Then I use stringr::str_remove_all to remove the long phrase ‘percent of all persons age 25 and over’, as well as the number 1. For some reason the Black and White columns each have a number 1 at the end, I think this is for some sort of footnote but we will just remove it.

+
+
hs_students <- hs_students_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303)) %>% 
+  mutate(across(everything(), as.numeric)) %>% 
+  rename(year = Total) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,", percent of all persons age 25 and over|1"
+      )
+    )
+
+

Then I am going to drop the column ‘Total - Asian/Pacific Islander’, each of these races is stored in a seperate column so if I needed the total later for some reason I could calculate it. I am also going to drop the string “Asian/Pacific Islander -”, from the begin of each of those columns, so they will now tell me just which race each column refers too.

+
+
hs_students <- hs_students_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303)) %>% 
+  mutate(across(everything(), as.numeric)) %>% 
+  rename(year = Total) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,", percent of all persons age 25 and over|1"
+      )
+    ) %>% 
+  select(-contains("Total - Asian/Pacific Islander")) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,"Asian/Pacific Islander - "
+    )
+  )
+
+

I now simply pivot the data longer. A nice trick I learned since I want to pivot everything expect the year column is to use the minus sign to select every column expect the year column in the pivot.

+
+
hs_students_long <- hs_students %>% 
+  tidyr::pivot_longer(-year)
+
+

With the data now in long form I am going to separate the automatically generate name column into two columns titled, stat and race. The data contains both the percent that graduated and the standard error. Then I replace all the NA’s in the stat column with Total, as these are the total percentage and the other rows will be the standard error. Last I dropped the s from standard errors to make it singular.

+
+
hs_students_long <- hs_students %>% 
+  tidyr::pivot_longer(-year) %>% 
+  tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% 
+  tidyr::replace_na(list(stat = "Total")) %>% 
+  mutate(
+    across(
+      stat
+      ,~stringr::str_replace(
+        .
+        ,"Standard Errors"
+        ,"Standard Error"
+      )
+    )
+  )
+
+

I know pivot the date back to wide form, and use the Janitor package to clean the column names. This puts them in lowercase with _ for spaces.

+
+
hs_students_wide <- hs_students_long %>% 
+  tidyr::pivot_wider(names_from = stat, values_from = value) %>% 
+  janitor::clean_names()
+
+

To make graphing a bit easier with the scales package, I divide both columns by 100. We will see why in the graphs.

+
+
hs_students_wide <- hs_students_long %>% 
+  tidyr::pivot_wider(names_from = stat, values_from = value) %>% 
+  janitor::clean_names() %>% 
+  mutate(across(total:standard_error, ~.x/100))
+
+

It’s now time to graph. Notice the use scales::label_percent() as the labels value for the y axis. If the numbers were left as the default values (75 vs 0.75) the percentages would have been 750%, which is obviously very wrong! I also use geom_ribbon to draw the standard error bars around each line. Notice the use of color = NA, by default the ribbon has outlines, I did not like this so doing color = NA turns them off. (It should be noted there are a few other solutions to turning them off but this seemed the easiest to me). Last we see the use of the aesthetics argument in scale_color_brewer. By setting this we match the color and fill to be the same color, without setting this, the colors of the error bars and lines don’t match!

+
+
hs_students_wide <- hs_students_wide %>% 
+  mutate(
+    ymax  = total - standard_error
+    ,ymin = total + standard_error
+  )
+
+g1 <- hs_students_wide %>% 
+  filter(race != "Total") %>% 
+  ggplot(aes(x = year, y = total, group = race, color = race)) +
+  geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = race), alpha = 0.3, color = NA) +
+  geom_line() +
+  scale_x_continuous(breaks = seq(1985,2016,3)) +
+  scale_y_continuous(labels = scales::label_percent()) +
+  scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill")) +
+  theme_bw() +
+  labs(
+    x      = NULL
+    ,y     = NULL
+    ,title = glue::glue("Percentage of High School Graduates by Race"
+                        ,"\n"
+                        ,"1985 - 2016")
+    ,color = "Race" 
+    ,fill  = "Race"
+  ) +
+  theme(
+    plot.title    = element_text(hjust = 0.5)
+    ,legend.title = element_text(hjust = 0.5)
+  )
+  
+g1
+
+

+
+
+
+
+

Load Male/Female Data

+

Now the file also contains the same information but split by male and female. I am going to load in that data.

+
+
male_hs_raw   <- readxl::read_excel("104.10.xlsx", sheet = 3)
+female_hs_raw <- readxl::read_excel("104.10.xlsx", sheet = 5)
+
+

Here I will use the same manipulations as above, the only addition is adding a column for sex.

+
+
male_hs <- male_hs_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303)) %>% 
+  mutate(across(everything(), as.numeric)) %>% 
+  rename(year = Total) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,", percent of all persons age 25 and over|1"
+      )
+    ) %>% 
+  select(-contains("Total - Asian/Pacific Islander")) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,"Asian/Pacific Islander - "
+    )
+  ) %>% 
+  tidyr::pivot_longer(-year) %>% 
+  tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% 
+  tidyr::replace_na(list(stat = "Total")) %>% 
+  mutate(
+    across(
+      stat
+      ,~stringr::str_replace(
+        .
+        ,"Standard Errors"
+        ,"Standard Error"
+      )
+    )
+    ,sex = "Male"
+  )
+
+
+female_hs <- female_hs_raw %>% 
+  filter(Total >= 1985) %>% 
+  filter(Total %nin% c(19103, 19203, 19303)) %>% 
+  mutate(across(everything(), as.numeric)) %>% 
+  rename(year = Total) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,", percent of all persons age 25 and over|1"
+      )
+    ) %>% 
+  select(-contains("Total - Asian/Pacific Islander")) %>% 
+  rename_with(
+    ~stringr::str_remove_all(
+      .
+      ,"Asian/Pacific Islander - "
+    )
+  ) %>% 
+  tidyr::pivot_longer(-year) %>% 
+  tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% 
+  tidyr::replace_na(list(stat = "Total")) %>% 
+  mutate(
+    across(
+      stat
+      ,~stringr::str_replace(
+        .
+        ,"Standard Errors"
+        ,"Standard Error"
+      )
+    )
+    ,sex = "Female"
+  )
+
+

Here we will combine the two data frames and then pivot to our final graphing form.

+
+
male_female_hs_wide <- male_hs %>% 
+  bind_rows(female_hs) %>% 
+  tidyr::pivot_wider(names_from = stat, values_from = value) %>% 
+  janitor::clean_names() %>% 
+  mutate(across(total:standard_error, ~.x/100)) %>% 
+  mutate(
+    ymax  = total - standard_error
+    ,ymin = total + standard_error
+  )
+
+

Lets first graph the total for Male and Female graduation rates.

+
+
g2 <- male_female_hs_wide %>% 
+  filter(race == "Total") %>% 
+  ggplot(aes(x = year, y = total, group = sex, color = sex)) +
+  geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = sex), alpha = 0.3, color = NA) +
+  geom_line() +
+  scale_x_continuous(breaks = seq(1985,2016,3)) +
+  scale_y_continuous(labels = scales::label_percent()) +
+  scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill")) +
+  theme_bw() +
+  labs(
+    x      = NULL
+    ,y     = NULL
+    ,title = glue::glue("Percentage of High School Graduates by Sex"
+                        ,"\n"
+                        ,"1985 - 2016")
+    ,color = "Sex" 
+    ,fill  = "Sex"
+  ) +
+  theme(
+    plot.title    = element_text(hjust = 0.5)
+    ,legend.title = element_text(hjust = 0.5)
+  )
+
+g2
+
+

+
+
+

Now I am going to graph by Sex and Race.

+
+
race_filter <- c("White", "Black", "Hispanic")
+
+make_label <- function(label){
+  # browser()
+  result <- stringr::str_split(label, "\\.")
+  unlist(lapply(result, function(x) paste(x[2],x[1])))
+}
+
+
+g2 <- male_female_hs_wide %>% 
+  filter(race %in% race_filter) %>% 
+  ggplot(aes(x = year, y = total, group = interaction(sex,race), color = interaction(sex,race))) +
+  geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = interaction(sex,race)), alpha = 0.3, color = NA) +
+  geom_line() +
+  scale_x_continuous(breaks = seq(1985,2016,3)) +
+  scale_y_continuous(labels = scales::label_percent()) +
+  scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill"), labels = make_label) +
+  theme_bw() +
+  labs(
+    x      = NULL
+    ,y     = NULL
+    ,title = glue::glue("Percentage of High School Graduates by Race and Sex"
+                        ,"\n"
+                        ,"1985 - 2016")
+    ,color = "Race & Sex" 
+    ,fill  = "Race & Sex"
+  ) +
+  theme(
+    plot.title    = element_text(hjust = 0.5)
+    ,legend.title = element_text(hjust = 0.5)
+  )
+
+g2
+
+

+
+
+
+
+

Conclusion

+

While I am sure there is much more that could be done with this data this is where I am going to stop for today. Our graphs clearly show a divide in graduation rates by race, however Sex does not seem to have much of an effect on graduation rates.

+ + +
+ +

Reuse

Citation

BibTeX citation:
@online{belanger2021,
+  author = {Belanger, Kyle},
+  title = {TidyTuesday 2021 {Week} 6: {HBCU} {Enrollment}},
+  date = {2021-02-26},
+  langid = {en}
+}
+
For attribution, please cite this work as:
+Belanger, Kyle. 2021. “TidyTuesday 2021 Week 6: HBCU +Enrollment.” February 26, 2021. +
+ +
+ + + + \ No newline at end of file diff --git a/_site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment_files/figure-html/unnamed-chunk-10-1.png b/_site/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment_files/figure-html/unnamed-chunk-10-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1394b8be6dfacb579fc69e6dcbace939293555e9 GIT binary patch literal 39079 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 agYK6h<*5+9&?^x5r=qB-kSF)wo&N`U<)5Yi literal 0 HcmV?d00001 diff --git a/_site/search.json b/_site/search.json index 8f97459..c916d96 100644 --- a/_site/search.json +++ b/_site/search.json @@ -39,7 +39,7 @@ "href": "blog.html", "title": "Posts", "section": "", - "text": "Diabetes in Rural North Carolina : Data Collection and Cleaning\n\n\nThis is the second post in the series exploring Diabetes in rural North Carolina. This post will explore the data used for this project, from collection, cleaning, and analysis ready data.\n\n\n\n\n\n\n\n\n\nJul 25, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nImporting Excel Data with Multiple Header Rows\n\n\nA solution for importing Excel Data that contains two header rows.\n\n\n\n\n\n\n\n\n\nJun 22, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nBasic Exploration of WHO Tuberculosis Data\n\n\nToday I am going to dive into some real life data from the World Health Organization (WHO), exploring new and relapse cases of Tuberculosis. I clean up the data, and then make a few graphs to explore different variables.\n\n\n\n\n\n\n\n\n\nFeb 13, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nLine Graphs and Interactivity\n\n\nTableau for Healthcare Chapter 10. Static and Interactive examples\n\n\n\n\n\n\n\n\n\nFeb 10, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nFacets and a Lesson in Humility\n\n\nA look at Tableau for Healthcare Chapter 8. Table Lens graph.\n\n\n\n\n\n\n\n\n\nJan 29, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nMy Start to R\n\n\nA short introduction to my blog, and R journey.\n\n\n\n\n\n\n\n\n\nJan 24, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\nNo matching items" + "text": "TidyTuesday 2021 Week 6: HBCU Enrollment\n\n\nTidyTuesday 2021 Week 6: HBCU Enrollment. Posts looks at tidying the data ,as well as making some graphs about the data.\n\n\n\n\nTidyTuesday\n\n\n\n\n\n\n\n\n\n\n\nFeb 26, 2021\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nConverting From Blogdown to Distill\n\n\nA meta post on transferring from a blogdown to distill blog site\n\n\n\n\nDistill\n\n\n\n\n\n\n\n\n\n\n\nJan 12, 2021\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nDiabetes in Rural North Carolina : Data Collection and Cleaning\n\n\nThis is the second post in the series exploring Diabetes in rural North Carolina. This post will explore the data used for this project, from collection, cleaning, and analysis ready data.\n\n\n\n\n\n\n\n\n\nJul 25, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nImporting Excel Data with Multiple Header Rows\n\n\nA solution for importing Excel Data that contains two header rows.\n\n\n\n\n\n\n\n\n\nJun 22, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nBasic Exploration of WHO Tuberculosis Data\n\n\nToday I am going to dive into some real life data from the World Health Organization (WHO), exploring new and relapse cases of Tuberculosis. I clean up the data, and then make a few graphs to explore different variables.\n\n\n\n\n\n\n\n\n\nFeb 13, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nLine Graphs and Interactivity\n\n\nTableau for Healthcare Chapter 10. Static and Interactive examples\n\n\n\n\n\n\n\n\n\nFeb 10, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nFacets and a Lesson in Humility\n\n\nA look at Tableau for Healthcare Chapter 8. Table Lens graph.\n\n\n\n\n\n\n\n\n\nJan 29, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\n \n\n\n\n\nMy Start to R\n\n\nA short introduction to my blog, and R journey.\n\n\n\n\n\n\n\n\n\nJan 24, 2020\n\n\nKyle Belanger\n\n\n\n\n\n\nNo matching items" }, { "objectID": "posts/post-with-code/index.html", @@ -173,5 +173,40 @@ "title": "Importing Excel Data with Multiple Header Rows", "section": "", "text": "Problem\nRecently I tried to important some Microsoft Excel data into R, and ran into an issue were the data actually had two different header rows. The top row listed a group, and then the second row listed a category within that group. Searching goggle I couldn’t really find a good example of what I was looking for, so I am putting it here in hopes of helping someone else!\n\n\nExample Data\nI have created a small Excel file to demonstrate what I am talking about. Download it here. This is the data from Excel. \n\n\nCheck Data\nFirst we will read the file in using the package readxl and view the data without doing anything special to it.\n\nlibrary(readxl) # load the readxl library\nlibrary(tidyverse) # load the tidyverse for manipulating the data\nfile_path <- \"example_data.xlsx\" # set the file path\nds0 <- read_excel(file_path) # read the file\nds0\n\n# A tibble: 7 × 7\n Name `Test 1` ...3 ...4 `Test 2` ...6 ...7 \n <chr> <chr> <chr> <chr> <chr> <chr> <chr>\n1 <NA> Run 1 Run 2 Run 3 Run 1 Run 2 Run 3\n2 Max 22 23 24 25 26 27 \n3 Phoebe 34 34 32 34 51 12 \n4 Scamp 35 36 21 22 23 24 \n5 Chance 1234 1235 1236 1267 173 1233 \n6 Aimee 420 123 690 42 45 12 \n7 Kyle 22 23 25 26 67 54 \n\n\n\n\nNew Header Names\n\nStep 1\nFirst lets read back the data, this time however with some options. We will set the n_max equal to 2, to only read the first two rows, and set col_names to FALSE so we do not read the first row as headers.\n\nds1 <- read_excel(file_path, n_max = 2, col_names = FALSE)\nds1\n\n# A tibble: 2 × 7\n ...1 ...2 ...3 ...4 ...5 ...6 ...7 \n <chr> <chr> <chr> <chr> <chr> <chr> <chr>\n1 Name Test 1 <NA> <NA> Test 2 <NA> <NA> \n2 <NA> Run 1 Run 2 Run 3 Run 1 Run 2 Run 3\n\n\n\n\nStep 2\nNow that we have our headers lets first transpose them to a vertical matrix using the base function t(), then we will turn it back into a tibble to allow us to use tidyr fill function.\n\nnames <- ds1 %>%\n t() %>% #transpose to a matrix\n as_tibble() #back to tibble\nnames\n\n# A tibble: 7 × 2\n V1 V2 \n <chr> <chr>\n1 Name <NA> \n2 Test 1 Run 1\n3 <NA> Run 2\n4 <NA> Run 3\n5 Test 2 Run 1\n6 <NA> Run 2\n7 <NA> Run 3\n\n\nNote that tidyr fill can not work row wise, thus the need to flip the tibble so it is long vs wide.\n\n\nStep 3\nNow we use tidyr fill function to fill the NA’s with whatever value it finds above.\n\nnames <- names %>% fill(V1) #use dplyr fill to fill in the NA's\nnames\n\n# A tibble: 7 × 2\n V1 V2 \n <chr> <chr>\n1 Name <NA> \n2 Test 1 Run 1\n3 Test 1 Run 2\n4 Test 1 Run 3\n5 Test 2 Run 1\n6 Test 2 Run 2\n7 Test 2 Run 3\n\n\n\n\nStep 4\nThis is where my data differed from many of the examples I could find online. Because the second row is also a header we can not just get rid of them. We can solve this using paste() combined with dplyr mutate to form a new column that combines the first and second column.\n\nnames <- names %>%\n mutate(\n new_names = paste(V1,V2, sep = \"_\")\n )\nnames\n\n# A tibble: 7 × 3\n V1 V2 new_names \n <chr> <chr> <chr> \n1 Name <NA> Name_NA \n2 Test 1 Run 1 Test 1_Run 1\n3 Test 1 Run 2 Test 1_Run 2\n4 Test 1 Run 3 Test 1_Run 3\n5 Test 2 Run 1 Test 2_Run 1\n6 Test 2 Run 2 Test 2_Run 2\n7 Test 2 Run 3 Test 2_Run 3\n\n\n\n\nStep 4a\nOne more small clean up task, in the example data the first column header Name, did not have a second label, this has created a name with an NA attached. We can use stringr to remove this NA.\n\nnames <- names %>% mutate(across(new_names, ~str_remove_all(.,\"_NA\")))\nnames\n\n# A tibble: 7 × 3\n V1 V2 new_names \n <chr> <chr> <chr> \n1 Name <NA> Name \n2 Test 1 Run 1 Test 1_Run 1\n3 Test 1 Run 2 Test 1_Run 2\n4 Test 1 Run 3 Test 1_Run 3\n5 Test 2 Run 1 Test 2_Run 1\n6 Test 2 Run 2 Test 2_Run 2\n7 Test 2 Run 3 Test 2_Run 3\n\n\n\n\nStep 5\nNow that are new name column is the way we want it, we can use dpylrs pull to return a vector of just that column\n\nnames <- names %>% pull(new_names)\n\n\n\n\nFinal Data\nNow that we have a vector of column names lets read in the original file using our new names. We set the skip argument to 2, to skip the first two rows, and set col_names equal to our vector of names. Note the last step I used the janitor package to provide names in snake case (the default for the clean names function.)\n\nexample_data <- readxl::read_excel(file_path, col_names = names, skip = 2) %>%\n janitor::clean_names()\nexample_data\n\n# A tibble: 6 × 7\n name test_1_run_1 test_1_run_2 test_1_run_3 test_2_run_1 test_2_run_2\n <chr> <dbl> <dbl> <dbl> <dbl> <dbl>\n1 Max 22 23 24 25 26\n2 Phoebe 34 34 32 34 51\n3 Scamp 35 36 21 22 23\n4 Chance 1234 1235 1236 1267 173\n5 Aimee 420 123 690 42 45\n6 Kyle 22 23 25 26 67\n# ℹ 1 more variable: test_2_run_3 <dbl>\n\n\n\n\nOther Help\nWhile searching for some solutions to my problem I found two good examples, however neither did exactly what I was trying to do.\n\nThis post by Lisa Deburine is pretty close to what I was trying to accomplish and gave me a good starting point. Read it here\nThis post by Alison Hill solves a simlar but slightly different problem. In her data the 2nd row is actually metadata not a second set of headers. Read it here\n\n\n\n\n\nReusehttps://creativecommons.org/licenses/by/4.0/CitationBibTeX citation:@online{belanger2020,\n author = {Belanger, Kyle},\n title = {Importing {Excel} {Data} with {Multiple} {Header} {Rows}},\n date = {2020-06-22},\n langid = {en}\n}\nFor attribution, please cite this work as:\nBelanger, Kyle. 2020. “Importing Excel Data with Multiple Header\nRows.” June 22, 2020." + }, + { + "objectID": "posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html", + "href": "posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.html", + "title": "TidyTuesday 2021 Week 6: HBCU Enrollment", + "section": "", + "text": "Introduction\nRecently I was struggling to find a data project to work on, I felt a bit stuck with some of my current projects, so I begun to scour the internet to find something to work on. I stumbled upon (TidyTuesday)[https://github.com/rfordatascience/tidytuesday] a weekly project where untidy data is posted from various sources, for the goal of practicing cleaning and visualizing. There is not right or wrong answers for TidyTuesday, this was exactly what I was looking for! This week (well by the time this was posted, a few weeks ago) the data set was about Historically Black Colleges and Universities. Within the posted data there were a few different data sets, I chose to work with the set dealing with High school Graduation rates, throughout this post I will explain my steps for cleaning and then present a few different graphs. It should also be noted that in the first section my code blocks will build upon themselves, so the same code will be duplicated as I add more steps to it.\n\n\nLoad Data\nIn this first block we will load some required libraries as well as load in the raw data. This dataset contains data for Highschool graduation rates by race. One thing to point out here is the use of import::from(), will its use here is a bit overkill, it was more for my practice. In this case I am importing the function %nin from the Hmisc package, which in the opposite of the function %in% from base R.\n\nlibrary(dplyr)\nlibrary(ggplot2)\n\nimport::from(Hmisc, `%nin%`)\n\nhs_students_raw <- readxl::read_xlsx(\"104.10.xlsx\", sheet = 1)\n\nglimpse(hs_students_raw)\n\nRows: 48\nColumns: 19\n$ Total <dbl> 1910…\n$ `Total, percent of all persons age 25 and over` <dbl> 13.5…\n$ `Standard Errors - Total, percent of all persons age 25 and over` <chr> \"(—)…\n$ White1 <chr> \"—\",…\n$ `Standard Errors - White1` <chr> \"(†)…\n$ Black1 <chr> \"—\",…\n$ `Standard Errors - Black1` <chr> \"(†)…\n$ Hispanic <chr> \"—\",…\n$ `Standard Errors - Hispanic` <chr> \"(†)…\n$ `Total - Asian/Pacific Islander` <chr> \"—\",…\n$ `Standard Errors - Total - Asian/Pacific Islander` <chr> \"(†)…\n$ `Asian/Pacific Islander - Asian` <chr> \"—\",…\n$ `Standard Errors - Asian/Pacific Islander - Asian` <chr> \"(†)…\n$ `Asian/Pacific Islander - Pacific Islander` <chr> \"—\",…\n$ `Standard Errors - Asian/Pacific Islander - Pacific Islander` <chr> \"(†)…\n$ `American Indian/\\r\\nAlaska Native` <chr> \"—\",…\n$ `Standard Errors - American Indian/\\r\\nAlaska Native` <chr> \"(†)…\n$ `Two or more race` <chr> \"—\",…\n$ `Standard Errors - Two or more race` <chr> \"(†)…\n\n\nNow we are going to start cleaning the data. First I am going to filter for years 1985 and up, prior to this year the data set is a bit spardic, so to keep it clean I am only going to look at 1985 and up. There are also 3 odd years (19103,19203,19303) that I am not sure what those are so I will remove that data as well.\n\nhs_students <- hs_students_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303))\n\nNext I am going to convert all columns to be numeric, because of some blanks in the original import all of the columns read in as characters instead of numeric.\n\nhs_students <- hs_students_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303)) %>% \n mutate(across(everything(), as.numeric))\n\nNext I am going to rename the columns. First I rename the column Total, into year, as this column holds the year! Then I use stringr::str_remove_all to remove the long phrase ‘percent of all persons age 25 and over’, as well as the number 1. For some reason the Black and White columns each have a number 1 at the end, I think this is for some sort of footnote but we will just remove it.\n\nhs_students <- hs_students_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303)) %>% \n mutate(across(everything(), as.numeric)) %>% \n rename(year = Total) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\", percent of all persons age 25 and over|1\"\n )\n )\n\nThen I am going to drop the column ‘Total - Asian/Pacific Islander’, each of these races is stored in a seperate column so if I needed the total later for some reason I could calculate it. I am also going to drop the string “Asian/Pacific Islander -”, from the begin of each of those columns, so they will now tell me just which race each column refers too.\n\nhs_students <- hs_students_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303)) %>% \n mutate(across(everything(), as.numeric)) %>% \n rename(year = Total) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\", percent of all persons age 25 and over|1\"\n )\n ) %>% \n select(-contains(\"Total - Asian/Pacific Islander\")) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\"Asian/Pacific Islander - \"\n )\n )\n\nI now simply pivot the data longer. A nice trick I learned since I want to pivot everything expect the year column is to use the minus sign to select every column expect the year column in the pivot.\n\nhs_students_long <- hs_students %>% \n tidyr::pivot_longer(-year)\n\nWith the data now in long form I am going to separate the automatically generate name column into two columns titled, stat and race. The data contains both the percent that graduated and the standard error. Then I replace all the NA’s in the stat column with Total, as these are the total percentage and the other rows will be the standard error. Last I dropped the s from standard errors to make it singular.\n\nhs_students_long <- hs_students %>% \n tidyr::pivot_longer(-year) %>% \n tidyr::separate(name, c(\"stat\", \"race\"), sep = \"- \", fill = \"left\") %>% \n tidyr::replace_na(list(stat = \"Total\")) %>% \n mutate(\n across(\n stat\n ,~stringr::str_replace(\n .\n ,\"Standard Errors\"\n ,\"Standard Error\"\n )\n )\n )\n\nI know pivot the date back to wide form, and use the Janitor package to clean the column names. This puts them in lowercase with _ for spaces.\n\nhs_students_wide <- hs_students_long %>% \n tidyr::pivot_wider(names_from = stat, values_from = value) %>% \n janitor::clean_names()\n\nTo make graphing a bit easier with the scales package, I divide both columns by 100. We will see why in the graphs.\n\nhs_students_wide <- hs_students_long %>% \n tidyr::pivot_wider(names_from = stat, values_from = value) %>% \n janitor::clean_names() %>% \n mutate(across(total:standard_error, ~.x/100))\n\nIt’s now time to graph. Notice the use scales::label_percent() as the labels value for the y axis. If the numbers were left as the default values (75 vs 0.75) the percentages would have been 750%, which is obviously very wrong! I also use geom_ribbon to draw the standard error bars around each line. Notice the use of color = NA, by default the ribbon has outlines, I did not like this so doing color = NA turns them off. (It should be noted there are a few other solutions to turning them off but this seemed the easiest to me). Last we see the use of the aesthetics argument in scale_color_brewer. By setting this we match the color and fill to be the same color, without setting this, the colors of the error bars and lines don’t match!\n\nhs_students_wide <- hs_students_wide %>% \n mutate(\n ymax = total - standard_error\n ,ymin = total + standard_error\n )\n\ng1 <- hs_students_wide %>% \n filter(race != \"Total\") %>% \n ggplot(aes(x = year, y = total, group = race, color = race)) +\n geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = race), alpha = 0.3, color = NA) +\n geom_line() +\n scale_x_continuous(breaks = seq(1985,2016,3)) +\n scale_y_continuous(labels = scales::label_percent()) +\n scale_color_brewer(palette = \"Dark2\", aesthetics = c(\"color\", \"fill\")) +\n theme_bw() +\n labs(\n x = NULL\n ,y = NULL\n ,title = glue::glue(\"Percentage of High School Graduates by Race\"\n ,\"\\n\"\n ,\"1985 - 2016\")\n ,color = \"Race\" \n ,fill = \"Race\"\n ) +\n theme(\n plot.title = element_text(hjust = 0.5)\n ,legend.title = element_text(hjust = 0.5)\n )\n \ng1\n\n\n\n\n\n\nLoad Male/Female Data\nNow the file also contains the same information but split by male and female. I am going to load in that data.\n\nmale_hs_raw <- readxl::read_excel(\"104.10.xlsx\", sheet = 3)\nfemale_hs_raw <- readxl::read_excel(\"104.10.xlsx\", sheet = 5)\n\nHere I will use the same manipulations as above, the only addition is adding a column for sex.\n\nmale_hs <- male_hs_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303)) %>% \n mutate(across(everything(), as.numeric)) %>% \n rename(year = Total) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\", percent of all persons age 25 and over|1\"\n )\n ) %>% \n select(-contains(\"Total - Asian/Pacific Islander\")) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\"Asian/Pacific Islander - \"\n )\n ) %>% \n tidyr::pivot_longer(-year) %>% \n tidyr::separate(name, c(\"stat\", \"race\"), sep = \"- \", fill = \"left\") %>% \n tidyr::replace_na(list(stat = \"Total\")) %>% \n mutate(\n across(\n stat\n ,~stringr::str_replace(\n .\n ,\"Standard Errors\"\n ,\"Standard Error\"\n )\n )\n ,sex = \"Male\"\n )\n\n\nfemale_hs <- female_hs_raw %>% \n filter(Total >= 1985) %>% \n filter(Total %nin% c(19103, 19203, 19303)) %>% \n mutate(across(everything(), as.numeric)) %>% \n rename(year = Total) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\", percent of all persons age 25 and over|1\"\n )\n ) %>% \n select(-contains(\"Total - Asian/Pacific Islander\")) %>% \n rename_with(\n ~stringr::str_remove_all(\n .\n ,\"Asian/Pacific Islander - \"\n )\n ) %>% \n tidyr::pivot_longer(-year) %>% \n tidyr::separate(name, c(\"stat\", \"race\"), sep = \"- \", fill = \"left\") %>% \n tidyr::replace_na(list(stat = \"Total\")) %>% \n mutate(\n across(\n stat\n ,~stringr::str_replace(\n .\n ,\"Standard Errors\"\n ,\"Standard Error\"\n )\n )\n ,sex = \"Female\"\n )\n\nHere we will combine the two data frames and then pivot to our final graphing form.\n\nmale_female_hs_wide <- male_hs %>% \n bind_rows(female_hs) %>% \n tidyr::pivot_wider(names_from = stat, values_from = value) %>% \n janitor::clean_names() %>% \n mutate(across(total:standard_error, ~.x/100)) %>% \n mutate(\n ymax = total - standard_error\n ,ymin = total + standard_error\n )\n\nLets first graph the total for Male and Female graduation rates.\n\ng2 <- male_female_hs_wide %>% \n filter(race == \"Total\") %>% \n ggplot(aes(x = year, y = total, group = sex, color = sex)) +\n geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = sex), alpha = 0.3, color = NA) +\n geom_line() +\n scale_x_continuous(breaks = seq(1985,2016,3)) +\n scale_y_continuous(labels = scales::label_percent()) +\n scale_color_brewer(palette = \"Dark2\", aesthetics = c(\"color\", \"fill\")) +\n theme_bw() +\n labs(\n x = NULL\n ,y = NULL\n ,title = glue::glue(\"Percentage of High School Graduates by Sex\"\n ,\"\\n\"\n ,\"1985 - 2016\")\n ,color = \"Sex\" \n ,fill = \"Sex\"\n ) +\n theme(\n plot.title = element_text(hjust = 0.5)\n ,legend.title = element_text(hjust = 0.5)\n )\n\ng2\n\n\n\n\nNow I am going to graph by Sex and Race.\n\nrace_filter <- c(\"White\", \"Black\", \"Hispanic\")\n\nmake_label <- function(label){\n # browser()\n result <- stringr::str_split(label, \"\\\\.\")\n unlist(lapply(result, function(x) paste(x[2],x[1])))\n}\n\n\ng2 <- male_female_hs_wide %>% \n filter(race %in% race_filter) %>% \n ggplot(aes(x = year, y = total, group = interaction(sex,race), color = interaction(sex,race))) +\n geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = interaction(sex,race)), alpha = 0.3, color = NA) +\n geom_line() +\n scale_x_continuous(breaks = seq(1985,2016,3)) +\n scale_y_continuous(labels = scales::label_percent()) +\n scale_color_brewer(palette = \"Dark2\", aesthetics = c(\"color\", \"fill\"), labels = make_label) +\n theme_bw() +\n labs(\n x = NULL\n ,y = NULL\n ,title = glue::glue(\"Percentage of High School Graduates by Race and Sex\"\n ,\"\\n\"\n ,\"1985 - 2016\")\n ,color = \"Race & Sex\" \n ,fill = \"Race & Sex\"\n ) +\n theme(\n plot.title = element_text(hjust = 0.5)\n ,legend.title = element_text(hjust = 0.5)\n )\n\ng2\n\n\n\n\n\n\nConclusion\nWhile I am sure there is much more that could be done with this data this is where I am going to stop for today. Our graphs clearly show a divide in graduation rates by race, however Sex does not seem to have much of an effect on graduation rates.\n\n\n\n\nReusehttps://creativecommons.org/licenses/by/4.0/CitationBibTeX citation:@online{belanger2021,\n author = {Belanger, Kyle},\n title = {TidyTuesday 2021 {Week} 6: {HBCU} {Enrollment}},\n date = {2021-02-26},\n langid = {en}\n}\nFor attribution, please cite this work as:\nBelanger, Kyle. 2021. “TidyTuesday 2021 Week 6: HBCU\nEnrollment.” February 26, 2021." + }, + { + "objectID": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html", + "href": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html", + "title": "Converting From Blogdown to Distill", + "section": "", + "text": "I have since converted this blog to a quarto blog, but am leaving this post up in case anyone finds it useful" + }, + { + "objectID": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#code-folding", + "href": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#code-folding", + "title": "Converting From Blogdown to Distill", + "section": "Code Folding", + "text": "Code Folding\nWhen I converted my blog on 12/30/2020, code folding was not included as an option by default in distill. At that time, an excellent package called Codefolder added the functionality. Since going live with the blog, code folding has been added to distill.1 Code folding is available for either the whole document or individual code sections. The default caption is “Show Code”, but instead of typing code_folding=TRUE, you can provide a string to change the caption.\n\n# Some awesome code \n# That does awesome things" + }, + { + "objectID": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#customizing-the-home-page", + "href": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#customizing-the-home-page", + "title": "Converting From Blogdown to Distill", + "section": "Customizing the Home Page", + "text": "Customizing the Home Page\nBy default, a distill blog’s home page will be the blog index page. I chose to edit my home page to be a landing page for myself and then have the blog index as a separate page. When creating a new blog, this is the default YAML header for your index page.\n---\ntitle: \"New Site\"\nsite: distill::distill_website\nlisting: posts\n---\nThe critical piece here is the line site: distill::distill_website. This line is what is needed to render the website. For my home page, I decided to use the package Postcard, which is used to generate simple landing pages. I won’t go into every step as there is already a great post by Alison Hill on how to do that. However, I will point out the most crucial part of the new index page the YAML header needs to contain these two lines.\noutput:\n postcards::trestles\nsite: distill::distill_website" + }, + { + "objectID": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#footnotes", + "href": "posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.html#footnotes", + "title": "Converting From Blogdown to Distill", + "section": "Footnotes", + "text": "Footnotes\n\n\nNote that as of publishing, code folding is only available in the development version of distill↩︎" } ] \ No newline at end of file diff --git a/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.qmd b/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.qmd new file mode 100644 index 0000000..07a8ba6 --- /dev/null +++ b/posts/2021-01-12_blogdown-to-distill/creating-a-distill-blog.qmd @@ -0,0 +1,63 @@ +--- +title: "Converting From Blogdown to Distill" +subtitle: | + A meta post on transferring from a blogdown to distill blog site +date: 01-12-2021 +categories: + - Distill +--- + +# Authors Note + +I have since converted this blog to a quarto blog, but am leaving this post up in case anyone finds it useful + +# Introduction + +This metapost describes changing my personal blog from a blogdown site to a distill blog site. I will not be going over starting a site from scratch as there are already several great resources for doing this. What I will be going over is some of the challenges and some of the changes and tips I have found. If you are looking to start a site from scratch, check out these great resources: + +- The Distill for Rmarkdown page on creating a [blog](https://rstudio.github.io/distill/blog.html) +- This excellent post from Shamindra Shrotriya on setting up a [blog](https://www.shamindras.com/posts/2019-07-11-shrotriya2019distillpt1/) +- This post from the Mockup [blog](https://themockup.blog/posts/2020-08-01-building-a-blog-with-distill/) + +This last post goes into some of the pros and cons of using distill instead of blogdown. If you want simplicity, go with distill without much customization. If you want the ability for a lot of customization and don't mind being frustrated with Hugo, go with blogdown. + +# Challenges + +The good thing about switching from blogdown to distill was I had very few challenges! The distill documentation, combined with the two posts I listed, helped me with most of my troubles. The only issue I ran into was distill contains a function called `import_post()`, which according to the docs, only needs a published URL to work. I could never solve why, but I could not pull in the posts from my old blogdown site. This wasn't a big deal as I had the original rmarkdown documents, but this could pose an issue if you didn't. + +# Going Outside the Box + +## Code Folding + +When I converted my blog on 12/30/2020, code folding was not included as an option by default in distill. At that time, an excellent package called [Codefolder](https://github.com/ijlyttle/codefolder) added the functionality. Since going live with the blog, code folding has been added to distill.^[Note that as of publishing, code folding is only available in the development version of distill] Code folding is available for either the whole document or individual code sections. The default caption is "Show Code", but instead of typing `code_folding=TRUE`, you can provide a string to change the caption. + +```{r, code_folding="Lets See It",echo=TRUE} +# Some awesome code +# That does awesome things +``` + +## Customizing the Home Page + +By default, a distill blog's home page will be the blog index page. I chose to edit my home page to be a landing page for myself and then have the blog index as a separate page. When creating a new blog, this is the default YAML header for your index page. + +```{.yaml} +--- +title: "New Site" +site: distill::distill_website +listing: posts +--- +``` + +The critical piece here is the line `site: distill::distill_website`. This line is what is needed to render the website. For my home page, I decided to use the package [Postcard](https://github.com/seankross/postcards), which is used to generate simple landing pages. I won't go into every step as there is already a great post by [Alison Hill](https://alison.rbind.io/post/2020-12-22-postcards-distill/) on how to do that. However, I will point out the most crucial part of the new index page the YAML header needs to contain these two lines. + +```{.yaml} +output: + postcards::trestles +site: distill::distill_website +``` + +# Final Thoughts + +I have enjoyed the simplicity of Distill. While not nearly as customizable as blogdown, getting a blog site up and running in under an hour is pretty lovely. I hope to keep exploring what Distill has to offer and keep posting my updates! + + diff --git a/posts/2021-02-26_tidytuesday-hbcu-enrollment/104.10.xlsx b/posts/2021-02-26_tidytuesday-hbcu-enrollment/104.10.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1c61d7efcf0ecec20a103a64b04127ffa351813c GIT binary patch literal 53341 zcmeFZbyyr2ui|cR;;75wW@AmB3kO4&4ZuL#|4;dE?17(&s~@`AaQaW>yg~~aOc}GW zjPP}Cca@}i5sMG!)%F((nZb6anwW-z#1t`&>D=0`?WeQxmv8chO5-N5zF}(>97C1~1e}wt z1+|}>Wz5AN=fA!bL2O%zG1YQc5W22IAc!WVFhkkTD|+d(5@Wy@PRawBR-^yeFB!`o zon5<9@YxwR--=#`q5VA`B!)(VpjVeZs^xxheNv=qm%Q}e{3C3MUR8#geOTeodptFY zH@Z^y1;>x#hwi_8Y7xXTb}3=YYu*Lx%6zTrY-9v^(ZpBMzQnd1UfLk@ap7Wm;tZVH zMd^O;fXd(fX&LiN`WO2pmms5Cd1BHURCBjXAJu@L{*mjCS^;ld1>h#cM`>z0S6ln0 zgx_@99rL{S*-$dwzwT6N?}b;-uBSeL5ZvhjY9Y5n?#rP1k`%xA;_7Illc?1qC2`XZ z3OWb`7Et(qG1vR2N+u$dxyw*uqClCe?_gr>$jb8P_&<#OZ%osFVfweYF6mx2jF8iS zQw)dI!j_0I>t;O6Yg#2T1D@3Sd7ji5DJbFy2``)i&=k(b^LtIMCe@P_3%YsxRUZlW)sZaSBy`+sNJ0m3|ftE9S4o zK)Kj+D9SOQ*ygD14m`+tS4BVk2Ghst%rbZATI-^6miOzlSr#wky|#vIHif?ej{UYc zEy|EF>$i|`!#JIIkI{j1tK7jUou9DF&m>`K{d8W`&eeOrqRjk_#EKMIsr+wb-X6+e z$))r76OlJ?&B?-kmoN<-(*7OZTy(LO5;DfgP?_F9G#w>f-Q2S2<+X5%NKgHE+ z@*Z4rAhg*o!=}6q7sq}xx02QR^tQhlC&Cq}37>jhUie6U;kctY$vfNm^8`#B9YRPm zn@OG($ZlY_g_&))fW^d$3mJdBOQ@r5zRiG9P}iY!pM>h=F&y3L!~0R)oXU6>4nfOO zm426B%H~!p!yD9ATNcD-OCPw&JI0MemHY$~7!3w;ibf$;>7|y)UL1X%p$qyJUBaIQ z`GWVPR2B%^{2YIrS5-%Z;omx^Ty?V@V*E7ym?8(J)yAhq=~@~?+8i3b-A!iS+Dr|? zH@DsS{r$JNOrR^zu{^OQgw4v6hB>KX<(FEDlI$c!it$HBIAK~{eA*{(0-q|5-~WC< zJ}8vXK7j_~d;|bMhav_FtbYlq`~*3>#n(_W!rzmD^*of!z3*X@PzJtW!Y)&qr(Me` z8%2WOl~U`z(Kzy5jn!$AR?0p(d50r)KJn)Cr~Uo22K@!ew|I$Nu2wjuh)pxsUGnzP_&-nPK60P_L4R#=pY?nJSj(d3w4i-x63bxG*t zP$Z>PqE~`pKTC^_CNbrk>w-qRBK|eI>>G~ub}@A&jm@7k`Vl%=h7)I-KC3p&^e^7PZ6)p2Q1IddY0Jp64EM4%pZM?coT^|C8$pN zZHE+B!n1ZivmppQBa{p|E!Jn6-Bu zt69s-EP{(mNWyJV{FYYY3-Moa!OKO_&^)6tT^sc17|q05zQWQ!Y6cUTLLRvXu9f@S z9Y^LDubDKvM`1286wxu;-ahudY(#PD6_k9m8mySQG^Q35yNIjo*52Zvm`gDe*NT4# zaY|X0?2>rHxsYV2>jI~~F&bxTzC6Ihdqok2>uFWhgxeTDDVj(2e`1rjLl8~rQ;eZ0qm#o`OvsXW`*AnI_AntKh$ZJC^?(SxOP0A-#c6xHO-gL*xdwYYcS|AuaeHn zmo-5D@`aQ=6zDZBoZ#BYMI%wZ+uV+CTADUJk>z~?nPRdc&Z9MgF+ZWqb z_4Mt?I#~7b7B}v_?@TjyuXdcPYJ7QD%NtJ9w>KRS6eJUtC>-d`<~x0mawwFuv2 z2bawbEOs?CT$!F<^^HD6XIHxk7@R^dZ)c}BP1|&ZPa_aqpC%Lqcl(_;7h*_HGSyrV z_AB*mlE!X=^#d34by#$SmyQwlgv++azW=_NwtW)P6FSuzPEO`}&7@PHzIN#Gq)o{0 z*36oK>eS+;DO70msjgCAILSA(2=5#c+Vfbk_(D3-86PQZ;i)g`I&@of&GCFksXVsWUV+I~ z4*NO#js0F9zB_xrUQ{@q(LrB|JNu4a)L}B}csj?V)4z!-!<5zi{}AO|maM=F zRp}rrL&2#o9j?$$oAq+lJ4{ z+P@Tu>CSG*DiIe7QmG4{xq}xa^vbo&C^=~EQHssnW1fBLD-7gXwh;eaDd`yVg15p5 z_m!#3@);4rA*ROXlgRc%JDk8J#D2d{LZ^+MK!{WHFJ`u1;AZ%L;J?!mnoGGr`AZu% zZ(Uc7^(OgY=b}rRAGJB|a(lxghcvf2hs(k32wtpL;O`O%hb_+%v0wViz;G@-GT`zK zrS0~p?539+Q(j(YzS59ziE;aXW5$%+?8cIF#gb|u*IW+Er;7b%zKVJsGu%%(pE6kO zLeo7jST1Xs!js2s%@<}ucW78#5vE!tR7jhjr3Vx5z-gg%^CX{gKajCT4` zJlQE(C64+eFWCG_>lr+SR3{BWOSyXGW|>u-Gc;*nxXK;57jkyKD(9Hx$hH(ae=b29 zF`41b-cc=w(eW*y)x=3dd}k{pbSqp`D8a`4uN^-n`!eizQ&Y6dpwxaI(sQL+KL2<4 z=Y;IbZ=9liAAJX{w0QoMuUn9iKK2SZy3$0Nrvn9g>n; z4^}4uw{s{Yru6<3mQEE{=U%Y%@c1G_hol{1OJpA%saSsqZ{`VywlH8KxpJyd&$PDE zIr{47MqwPt9KDxvP>g9Q*|HaM6;-RA=ZdT=7j9KNX?~VHX$F}LIc2E45>}(3_ls^B zUq@a=5$spKh7k!rTm!+f35Q}BT*2s$V8Xz?8y(#=5_#eOM3_Qml7uOik@28NDJ=ar z>76AQpM?BHt*cYtVBZI1g%w|a$@OFY_=i8_NA($37{|Ut8N;ggzXZe|)wKFxT zK?yjRVg-H@7?Fa}d9R>dGp8hGuutky*eAo*Eu#*Fo%g9`LF1E*fA`S-*9h$0$@!Pr z*08uQZAXB|-acG6&Y>e7UJefoFu_YVpU1lF1r_bg{7R?e zoHg5c62Z@bJhEv`9x3Xs7R6_{Jps*gDYHhG477JmZ0|TT+^L_q;L>|c)cV2&b?{@E zKFjaCpB!RA-+lUiMq@oZ#BJr0Yb$$ic-1%G$5bVLs7$p@7MLl_Vd|{!%ov6vk4lK5**dE|1+78_n^ z&DCEf5~izwM*^fIl>#JWoWR8(E@u0u-VNc@XCIaIE2{09PM)?)+W3IYyZxR!}g8Jh;7X{ zYvS{uzTlhY9Nn!cgDB=724T+r54s~JM>>Y z2_CljRFDHHiA*mQum7kvg(S_%YzIVS};*EF+4@ zOH4w5dXks3FZY9Xz^^>-DNp1x4v~zbei~zgZjWAOMCR9HBvdMe7x0`d-s9?q;NDJd zgH{+r0GEbcT7wW}(!gJ8$#T4?o%2QLApiVG|4Tn!UJ*a`WKK4ixvw$2;S?gDL!CBY zQ#QEcL&s4;Ki=t4eci;@h$w9Mfzf&0bWV)sNp38Ei}Ur-pYMj!f*EfAn~I?Y+M}jU zn=FA9RptoA-nQgfkyLVj74#`e(KP*l>rvg`Mq6o&+^aS*>~wqC>Y4;pU%$b9fcv7fhf~2S*kwA`s>3wt_Vbg#QTq?i-gjWL-=CV@*smpchG@O`KTpCU z@cG2vHSD$ogk{aDopzDgAyjp++^g*KK>om zjZ^nig>N+zrXF?mai07%TSws%T!(Z!^O;#St}##Z?>E1eYChp@e8(SEk0Q{e<_(Ic zpY{VW2$Tc@+Okv-Fo+3L{eqO*C}^{Q8^KZUYQ@*yAfm{qB4}%Sf}oqgh=w^Zm%hUJ z-4dB*s))l-oD(IG^|Bui$&Lcq4uoR2)&MU_xPyDEEM0RJ0$jj&g@S5vTs-jyacTwt z{%}~pGxygkJbaOSLvS(j`Fn6oqRld?Ml)`CfQJRp8Wf@~HOSpVI!7z77oA9G{{?1~#j-lbQ z)hjYAhXT_4J1oMQ;HEgZ@>1#>5rs&<77NTEl`$od@KorAd_lVkMPy&Z8J3C^Juekp zbzjOyz_er?8kN+1m>_&uc?+$#>IR}U$iJL=FB~ps+;P* zvVkW|OcA+H5#Ps#AeO-4~}{7KvB4@Y7uvT;Q!X*bKNZMtv8G~O0M!3&mg0>4UVJwrUuKO zO^gKyCWt(i1iw3rHkLUQ@EHIrMnXY;rLCsIV!%Twd54KVP#tL84cuv6;=J#bR*YN6 z7{&EB(LGhDiKY$xMSzsU|WBC8C+7rXk zCsbjUz5!ls;r7C2T|1W{+bZqnCxUr<2!ZAU*0*`>!-k^iXRAuGRUb4vU+&7M_xkAH zNl#YrR+HlUb`}q8Jg*G(Q{;r_Eq}+14DjmS_%1e>-Kc4w-8HWq&s2m$+81xUlCO2u z(qnMTGiMK%*RwA12Uy{RAEBFv|8|-Cvp|vv1sec1egEMym*cNxZicqw;%nTX)dovQ z;P5F`B#w!83AMJ7ZV5_-r>Ckl&8N>c?#yzgJFBd8@3ETGcd9Ppw$|3D-f~f3ped0- z&UZI^=A);FcYK~M_XW)B#>Uj-8xC6@itMsRAy;D)th2jj>BkrQws)02THgE+t2#c& zz-|ZRc$4ffd6j2Xz3e!ZO29@a!*|s-OISz8+P0&DG&z0d-u-Gzy1iVVG+Fy*HQ5d? zeK&df!d89%e4Wy|ft8gs`9^-XA_$%J^y9Y-;3C-D;qxPW$8a!*AAx!vV935TrVFSUfhJ* zR6QG2H$$$y4|9`Gj#OUl_blrNPVdZIeX&wv6!6OJa%g#cJU4k7NIl%^tlM?h9HPC& zxEvj05Ibe=-i>Zh&CoBCZYgDP-xNBE9y^Z46V@5F^EF*+j1t!jGV$(U+A~;Rdr9Ik z-IBsS73HTSk>(H{^9e0Ti8jq4IHnOnEX%o+eiocMEwcCecNz}=Y9#cakV`LUEv*Hc zlW@dcu;~n4^3u#E#AssP7s30`iU|MayI+7+U5C1D;^V%+k_FEmJd<|E zYimW}%bSAt7L#UV<_O;9Ii}+;**FM{;@Q~=s)kb1qEd%a(xZZhBxNNmIXL2D)1$hL z6XZ~1zP0$Qu+B5w(P_3P**Sq_95EQOM39*=j*{!|HSVP~vg9zOHL~Tv zrKMsgC>a`*m9XVNj#uPi7pb10kNX}M9d~?2cZlbzb@_7gf3yFxGPO1h84XdD@zX}} z^l=wi8sGKJkR2obr#7C)9KNmb-p|?Rk0fk7hw@y3EX5j}djVx`td#kmzghW*4K<>-0eQrOqDKNakMX#nc*n(xzJTR(x ze#@y*n%1SnO~4t?&P#w2ADa?2Wo%4K#Y+%8M3;_FuG%2`;8UVDl&NB|)a-BAMzDz2 z!K?2dQ3ONBT*1=ji5evCvL%QXQ8c3LW5G{#$Ys*--Bznlv_ z(h_|LMOkE4+EV~(fAMr*!*M7Yh`gO$g2O6z|3K{cWZUp5$H-&QE~fTgjB=mw5X^e= zZp1$O_>*zq#bu%V?}fP>a|q7VW@p0 zGI?CcHQ3-MkXVb}xU(<$^Qwh|DV=BHsPpv?9WHAkGai}}shovv;*>JlXNcF2JVN=7KYO?t_K^1Ohu^Q;CXd&uL}3; z=yO{?m?KIAhSye%q*3zsGZSvnXW0<(c+uc)4>( zh%I5Z6c_OSK>K*H5R0dUfA;GlMLW9`9*}!BDz_b_k)^V55#cePtDmu!R*I)2tY79% zk6W~%x0arl6h%|V?SJ4#u*c%WOapo#rjp${d))qqcr5{LJLhC1y;|P)DcCc zM<{z>GCAe&aPV+88YWY53}fxbKJf@TlHG?KJZ^f9yE-{8=p(ZkvXTC%{6hj6x!!?g zg;itq8?uL>W(>f|I4(NNTJe$z;5U?3(dI*EB&`bw#+63tM-AIca)Ln;H=9rQSImsFbzB-t za6V0=Dh~>JW%|J2Nlgx5T#CY+aBlk(n65zIt7AcXx}QIRE%A8@8nj76$SfwX|1d&b zeV22GmRDs{Kc7%b8(hBpvv7;2ppxE%3VvFLkMvZ%=G2mpdvd59>G6V}`(eAz5h_Qa)zMAkOtce5r&b^lzmp`0#+ZNG< za*~LnBRqjePP=D4q3hCb$_3DDw#jezs@}qUC{s)(k$ys<*YGD?B*{ChiaE`C9JPx! zO>)RP<+QrcA#})H*P_Fdi?i2On$lel>!MKp8io_jO<`qk$nGg*|AVGNR%&ofMy}GM8tH2AkjnikLgjojM)_R%wHAX;@sg`ZS zvxObj>GoaCm!jsas}jAZpyqR2;6p_#n~S+Y57>&|FkDW`O365gTd*A(+WrE=!4M!h@#x<-P3)M8CAd-VIdg`|q8JyyNVY4pNFZ>YB(-NTJjGLZPZ!(<` z8Y|{-aZaVmwZMhy>F*msn`}yhi&7J$%I>NX685bW%R@p zar}zql29j&DC`|eM%s13i zf|m#!-$?75o#;(sFb1Wiz5whWkp%?Md}wB`XXHeyGU8inbnAJys$E02@6F#N%+ljx z@pH5gBX^E7ZM9G&-`oEbP^5?HZTU<<&JYY&q?ES)6W@La#SpxA{$2y@7nHQdmq^r) z1G254N24Ohgk|S)gnM0}go2z9d^E^HfU#y;ut_hzpShLme1=)W19g`km2O9SJPVNx zEHEXN47#*O5KcrAc(uIqz%y8`=Hl*2z2UYoJblNXA||$F{leph3f3)jg&3>3-2ak1 z9hgJwe-Uxp&-u>JF>X(5>%+#^^A)3Rn~$oog%y6#}6(Q zThf`pDyN3Uy;dG`Jk~pjAPaQgJlF)!F(n3TOy)9l)sttSkoStuh=i?t!N#S(@=?pS zFS}KVe$1F6CvWT$?5D*R0QX8I6&%Ca|6uV79K&1MzXU@f`b6clU6M-xWBC<9a<7?y zCOZ2JlUPJTVUMP&S=rjZF_a(^W1i)*y-NGnPbit8K3_2OkY{!Rsj!8Kg^^CTSZYCbJ^2M$4F%OY} z#>yspHu`p*;T8H?uQVb)vPf?PZblVy=j)6lm=8ND?67WS>o{0n)!chPuug^t4V`FZ zTtZB6BAd1W-Wx0ZVvHcL{U$64MIapSWO8`PYPWtjF8W9KdJ)+nEN$R{Te0kwrann+ z`xe@k21_)?bxv!46QPLMfCVgVvQt`U)TUh)W?k~NpQAI0@j8fmei@rn!hAz;%KqbLJJsow|YO5Smv-83^YirTArf8P?cEH3 zbIoJjq)&BfrQzygiKA)2(Oxs%utpULaBL-#>mmO1p(u#4Qc#^KJPx$3xc9m_bIaDb z)5{X^$X2uoo57AJ=wcz&&)4q@Qz$Atd4tNhm}Vy#rym(+mWUWRa~MHq^d~urE~(F1 zmd1XT(-1KKgf7@GBoNM1N=PgMC{k_K;}k$NRN4XC^R{!y2kSL%ptKwNxpw98%U754 zo9mw2tuBc)wdfaR?u)yB=kIEEc+-~F@vsjnS1|oPuE!s0WGnX;ZxRkGp!`dzlNX8V z6I`2X)+ZE|5+G)NKn!sBjc%5`vq&lwkY4bEJn99zd^b{yIYe>xN47@xfS$*A%!JhQs>G<8Gm^ zC9;tz7C;2&Zb1fWr9iP7Zk`LU97b3Ok_T3WC_0zn&zglY0nM2oP4KOZ#hpS4iA`~! zOwo{TfuWd)@t6($=VpHg*P;)r#NKoj`9m@fV0(FNt`|80E&U@*Q_NJ>?Lzs30(u6i zA_0@k-t8$M2Vr<5TiI<@1_Yg&ng~F1Llf-h3Y_s}m)J%CH*DyuqU(Hn=Q@1v{aU!( zW&4D1J6etXW>M&tUNbROQ5_cUdx@HP-)a2o`~qF;i^#Tf=Z!8jkou z9ZHmNYAh+5I4SC6Ns8EC(QEh)am?7qf=_W7)Qu;HjQ9C3phl-STMtW;@Z+SsPI zxL8uuanjWBk}R=elm%p6<*$dF!mba82g=tZ^&Jqf2&9dvW2@fMVujOiBo4|_I)*b* z$4OErO47#aPzJx177oz;^efGyR=-=&1^)eg9B0g+0wq;=6b(nLBvWk3TT`r58Domr zx0EGsIl{NF=&6ceiF5&TP;}_ko*!C?{YL0|K zNlK$|S!yg9V}{t&w>wyxlGL%146(A5O>dFI6MW!WHu8goZyYx&SRMKQgPJ{2KdckC zyYwB}6?QzQ-I+dBGdBz$AMDyShPJHQy9)Q5Y&=~}E5#~n_#yOB??LA?2WGA&=&5_`CP#XIc^aS?uOk8G~EV?8`}d1{2L-az+`wteuH z1-%@6uASRfP9Vx8dH0`gm!n&JpM{}WApdp)?WFD`+y|N`@~r+3H_$l$mM1d*Cr`w? z1M`Lqyn;yOuR&b@D&*Z!WPVHAFZ_n^s?V%!lbpW7^a3Io@nT3%Q=>omOSe@R7;DCR z#(Y~lUi#?UxE_uS7)>xHMg~t0IQ(vXzJ1nsyy@u9BJAt7?YMQ*Yqb$li|!LvZ`l}= zhdd7SM2}q0E+1Ofv4Xn?PO5I3SAADjmyeSw%5M6~YwvWt!*)z+y!DT^$Bu7WmUmt1 z+=RG1d|Q4GZ!auA7(OXJiZ!n41y;GcYqF|mj9fI_Ob0fMB9>bS2Na@ zA!KAPNt3MFnZ2}+)Q(3MeP_oW)YpT@H{7qPZ;x%r?0hcO4^JyRV`q%Tez`aKKG)PN zFq??xB0y{qgom0g=e^`m;gmDOzs0eG|VJDgE>*Oyd}k zm=TF(JVHPehsYk^CMtH?sZIf*32Q@YcYG1GdA`|rZf>D? zZiDLPg9v>}$h1%?Yy3-~6m^^%B(|4*AUX!OXN6)~R&P+BhEIiUWNj!b8&wj{&dI(* zD`9NdOZz7a!}|M5_srDo&l$p+X;t+!8V{3(=!0QvXHaRTVHpxeGw>*VkUH|P5YSZ0 zoKi;HKiG?(j*pFPWNG+QHmWHcGZnuo{7-&~dZ2b=8evwGmRWi8fnTbJik>M0S4A0l zCmdMUPg)^2yV?xqvJT!+Rhvy+E-E&horj&4wtuQOB^BQhn~HcW_Tf z&Mo9v*QMh;T}K=L{kYUOPT3$239=V6{%PdUr$oyIq8KzmbA$}vlT(H+aH55t7MYfI zqw8Jwqw35rZMNj@tXTL|c>$KnM%2^b-!=O2`)cFQM)K*_)D% z9~+LDjxR-uz^3X@G0Vx#?UEv`yyP(5J!QJ0-Fi$|)VdwTG}bFTA$;YO(!j$#K&?)4iCd^Or-yWAX7} zzL@&=(TlU;w%%;u!PplnjzV7kqT;G665wos@46@aps(}aiY@V4trOfskmO8_^Llxt z<01o8IeEH+kfgzSlYR6V2zYNZ<;FZ~K%@>cJ zIDnf)49xCN{Ok|2Cd(WhTHhZAN;75?BG_`%Y5`24xfQbJY>q@U)ry8he@onW7k0QG z=}arcUn`)_dZ{{Vq~lHN4a&}8_;}`r>WAT}z%y!$s;;b9zDO31lWJOn(-p$9!Kzq1iWAGn@0#U%C=A4*?hb#r z<{OV#SSIU|X~-lb!N2 z7b=nnH3gINCYTHEzV70F0Z)ZcTueoRDw?5<1$QQ$`1@Ldu!!dKp~X>BU{F7fc&$J& zjcQ$Vh=UUDXOKwPK(amBABW8}al)(xsF48y&9scL#n>dMIXOep04RCN9*k@N<8cnZ z)mXHor`r(x0?cOt=Lp1bemdc!>OQ%pVHp^h%i@=p3;>j3gkAAV(q_2Ii%PZ8u}U3O zM*XD;j%+cq#cOf#(0_KjW6K)p`ANzctIHNHj=p?Jco3?0E=YZC-( z@8JeUKy%J=>;=#g9sMY{+`-uJ+2#>4ohQ~Iz{?lgJ5Yo&og&LH2%{-51)q%Pkavyh zynua7M>a=1Gy=(K{D9{g=S?Zd9%0D#7e$bJ3B3Aoc2`}uul^bp15U$vo0xSD#p+Ip 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 literal 0 HcmV?d00001 diff --git a/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.qmd b/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.qmd new file mode 100644 index 0000000..21f49f3 --- /dev/null +++ b/posts/2021-02-26_tidytuesday-hbcu-enrollment/tidytuesday-2021-week-6-hbcu-enrolment.qmd @@ -0,0 +1,362 @@ +--- +title: "TidyTuesday 2021 Week 6: HBCU Enrollment" +subtitle: | + TidyTuesday 2021 Week 6: HBCU Enrollment. Posts looks at tidying the data + ,as well as making some graphs about the data. +date: 02-26-2021 +categories: + - TidyTuesday +--- + +# Introduction + + Recently I was struggling to find a data project to work on, I felt a bit stuck with some of my current projects, so I begun to scour the internet to find something to work on. I stumbled upon (TidyTuesday)[https://github.com/rfordatascience/tidytuesday] a weekly project where untidy data is posted from various sources, for the goal of practicing cleaning and visualizing. There is not right or wrong answers for TidyTuesday, this was exactly what I was looking for! This week (well by the time this was posted, a few weeks ago) the data set was about Historically Black Colleges and Universities. Within the posted data there were a few different data sets, I chose to work with the set dealing with High school Graduation rates, throughout this post I will explain my steps for cleaning and then present a few different graphs. It should also be noted that in the first section my code blocks will build upon themselves, so the same code will be duplicated as I add more steps to it. + + +# Load Data + +In this first block we will load some required libraries as well as load in the raw data. This dataset contains data for Highschool graduation rates by race. One thing to point out here is the use of `import::from()`, will its use here is a bit overkill, it was more for my practice. In this case I am importing the function `%nin` from the *Hmisc* package, which in the opposite of the function `%in%` from base R. + +```{r} +library(dplyr) +library(ggplot2) + +import::from(Hmisc, `%nin%`) + +hs_students_raw <- readxl::read_xlsx("104.10.xlsx", sheet = 1) + +glimpse(hs_students_raw) + +``` + +Now we are going to start cleaning the data. First I am going to filter for years 1985 and up, prior to this year the data set is a bit spardic, so to keep it clean I am only going to look at 1985 and up. There are also 3 odd years (19103,19203,19303) that I am not sure what those are so I will remove that data as well. + +```{r} + +hs_students <- hs_students_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) + +``` + +Next I am going to convert all columns to be numeric, because of some blanks in the original import all of the columns read in as characters instead of numeric. + +```{r} + +hs_students <- hs_students_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) %>% + mutate(across(everything(), as.numeric)) + +``` + +Next I am going to rename the columns. First I rename the column Total, into year, as this column holds the year! Then I use `stringr::str_remove_all` to remove the long phrase 'percent of all persons age 25 and over', as well as the number 1. For some reason the Black and White columns each have a number 1 at the end, I think this is for some sort of footnote but we will just remove it. + +```{r} + +hs_students <- hs_students_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) %>% + mutate(across(everything(), as.numeric)) %>% + rename(year = Total) %>% + rename_with( + ~stringr::str_remove_all( + . + ,", percent of all persons age 25 and over|1" + ) + ) + +``` + +Then I am going to drop the column 'Total - Asian/Pacific Islander', each of these races is stored in a seperate column so if I needed the total later for some reason I could calculate it. I am also going to drop the string "Asian/Pacific Islander - ", from the begin of each of those columns, so they will now tell me just which race each column refers too. + +```{r} + +hs_students <- hs_students_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) %>% + mutate(across(everything(), as.numeric)) %>% + rename(year = Total) %>% + rename_with( + ~stringr::str_remove_all( + . + ,", percent of all persons age 25 and over|1" + ) + ) %>% + select(-contains("Total - Asian/Pacific Islander")) %>% + rename_with( + ~stringr::str_remove_all( + . + ,"Asian/Pacific Islander - " + ) + ) + +``` + +I now simply pivot the data longer. A nice trick I learned since I want to pivot everything expect the year column is to use the minus sign to select every column expect the year column in the pivot. + +```{r} +hs_students_long <- hs_students %>% + tidyr::pivot_longer(-year) +``` + +With the data now in long form I am going to separate the automatically generate name column into two columns titled, stat and race. The data contains both the percent that graduated and the standard error. Then I replace all the NA's in the stat column with Total, as these are the total percentage and the other rows will be the standard error. Last I dropped the s from standard errors to make it singular. + +```{r} + +hs_students_long <- hs_students %>% + tidyr::pivot_longer(-year) %>% + tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% + tidyr::replace_na(list(stat = "Total")) %>% + mutate( + across( + stat + ,~stringr::str_replace( + . + ,"Standard Errors" + ,"Standard Error" + ) + ) + ) + +``` + +I know pivot the date back to wide form, and use the *Janitor* package to clean the column names. This puts them in lowercase with _ for spaces. + +```{r} + +hs_students_wide <- hs_students_long %>% + tidyr::pivot_wider(names_from = stat, values_from = value) %>% + janitor::clean_names() + + +``` + +To make graphing a bit easier with the *scales* package, I divide both columns by 100. We will see why in the graphs. + +```{r} + +hs_students_wide <- hs_students_long %>% + tidyr::pivot_wider(names_from = stat, values_from = value) %>% + janitor::clean_names() %>% + mutate(across(total:standard_error, ~.x/100)) + + +``` + +It's now time to graph. Notice the use `scales::label_percent()` as the labels value for the y axis. If the numbers were left as the default values (75 vs 0.75) the percentages would have been 750%, which is obviously very wrong! I also use geom_ribbon to draw the standard error bars around each line. Notice the use of color = NA, by default the ribbon has outlines, I did not like this so doing color = NA turns them off. (It should be noted there are a few other solutions to turning them off but this seemed the easiest to me). Last we see the use of the aesthetics argument in scale_color_brewer. By setting this we match the color and fill to be the same color, without setting this, the colors of the error bars and lines don't match! + +```{r} + +hs_students_wide <- hs_students_wide %>% + mutate( + ymax = total - standard_error + ,ymin = total + standard_error + ) + +g1 <- hs_students_wide %>% + filter(race != "Total") %>% + ggplot(aes(x = year, y = total, group = race, color = race)) + + geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = race), alpha = 0.3, color = NA) + + geom_line() + + scale_x_continuous(breaks = seq(1985,2016,3)) + + scale_y_continuous(labels = scales::label_percent()) + + scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill")) + + theme_bw() + + labs( + x = NULL + ,y = NULL + ,title = glue::glue("Percentage of High School Graduates by Race" + ,"\n" + ,"1985 - 2016") + ,color = "Race" + ,fill = "Race" + ) + + theme( + plot.title = element_text(hjust = 0.5) + ,legend.title = element_text(hjust = 0.5) + ) + +g1 + + +``` + +# Load Male/Female Data + +Now the file also contains the same information but split by male and female. I am going to load in that data. + +```{r} +male_hs_raw <- readxl::read_excel("104.10.xlsx", sheet = 3) +female_hs_raw <- readxl::read_excel("104.10.xlsx", sheet = 5) + +``` + +Here I will use the same manipulations as above, the only addition is adding a column for sex. + +```{r} + +male_hs <- male_hs_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) %>% + mutate(across(everything(), as.numeric)) %>% + rename(year = Total) %>% + rename_with( + ~stringr::str_remove_all( + . + ,", percent of all persons age 25 and over|1" + ) + ) %>% + select(-contains("Total - Asian/Pacific Islander")) %>% + rename_with( + ~stringr::str_remove_all( + . + ,"Asian/Pacific Islander - " + ) + ) %>% + tidyr::pivot_longer(-year) %>% + tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% + tidyr::replace_na(list(stat = "Total")) %>% + mutate( + across( + stat + ,~stringr::str_replace( + . + ,"Standard Errors" + ,"Standard Error" + ) + ) + ,sex = "Male" + ) + + +female_hs <- female_hs_raw %>% + filter(Total >= 1985) %>% + filter(Total %nin% c(19103, 19203, 19303)) %>% + mutate(across(everything(), as.numeric)) %>% + rename(year = Total) %>% + rename_with( + ~stringr::str_remove_all( + . + ,", percent of all persons age 25 and over|1" + ) + ) %>% + select(-contains("Total - Asian/Pacific Islander")) %>% + rename_with( + ~stringr::str_remove_all( + . + ,"Asian/Pacific Islander - " + ) + ) %>% + tidyr::pivot_longer(-year) %>% + tidyr::separate(name, c("stat", "race"), sep = "- ", fill = "left") %>% + tidyr::replace_na(list(stat = "Total")) %>% + mutate( + across( + stat + ,~stringr::str_replace( + . + ,"Standard Errors" + ,"Standard Error" + ) + ) + ,sex = "Female" + ) + +``` + +Here we will combine the two data frames and then pivot to our final graphing form. + +```{r} + +male_female_hs_wide <- male_hs %>% + bind_rows(female_hs) %>% + tidyr::pivot_wider(names_from = stat, values_from = value) %>% + janitor::clean_names() %>% + mutate(across(total:standard_error, ~.x/100)) %>% + mutate( + ymax = total - standard_error + ,ymin = total + standard_error + ) + + +``` + +Lets first graph the total for Male and Female graduation rates. + +```{r} + + + +g2 <- male_female_hs_wide %>% + filter(race == "Total") %>% + ggplot(aes(x = year, y = total, group = sex, color = sex)) + + geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = sex), alpha = 0.3, color = NA) + + geom_line() + + scale_x_continuous(breaks = seq(1985,2016,3)) + + scale_y_continuous(labels = scales::label_percent()) + + scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill")) + + theme_bw() + + labs( + x = NULL + ,y = NULL + ,title = glue::glue("Percentage of High School Graduates by Sex" + ,"\n" + ,"1985 - 2016") + ,color = "Sex" + ,fill = "Sex" + ) + + theme( + plot.title = element_text(hjust = 0.5) + ,legend.title = element_text(hjust = 0.5) + ) + +g2 +``` + +Now I am going to graph by Sex and Race. + +```{r} + +race_filter <- c("White", "Black", "Hispanic") + +make_label <- function(label){ + # browser() + result <- stringr::str_split(label, "\\.") + unlist(lapply(result, function(x) paste(x[2],x[1]))) +} + + +g2 <- male_female_hs_wide %>% + filter(race %in% race_filter) %>% + ggplot(aes(x = year, y = total, group = interaction(sex,race), color = interaction(sex,race))) + + geom_ribbon(aes(ymax = ymax, ymin = ymin, fill = interaction(sex,race)), alpha = 0.3, color = NA) + + geom_line() + + scale_x_continuous(breaks = seq(1985,2016,3)) + + scale_y_continuous(labels = scales::label_percent()) + + scale_color_brewer(palette = "Dark2", aesthetics = c("color", "fill"), labels = make_label) + + theme_bw() + + labs( + x = NULL + ,y = NULL + ,title = glue::glue("Percentage of High School Graduates by Race and Sex" + ,"\n" + ,"1985 - 2016") + ,color = "Race & Sex" + ,fill = "Race & Sex" + ) + + theme( + plot.title = element_text(hjust = 0.5) + ,legend.title = element_text(hjust = 0.5) + ) + +g2 + +``` + +# Conclusion + +While I am sure there is much more that could be done with this data this is where I am going to stop for today. Our graphs clearly show a divide in graduation rates by race, however Sex does not seem to have much of an effect on graduation rates. + + +