tables recodes regexps previously
play

Tables, Recodes, Regexps ~/> previously Reasonable Grad - PowerPoint PPT Presentation

~/>_ Tables, Recodes, Regexps ~/> previously Reasonable Grad Students: We want practical data skills applicable both in research and outside of academia. Me: OK, here is git and how to use it. Reasonable Grad Students: ~/>_


  1. ~/>_ Tables, Recodes, Regexps

  2. ~/> previously …

  3. Reasonable Grad Students: We want practical data skills applicable both in research and outside of academia. Me: OK, here is git and how to use it. Reasonable Grad Students:

  4. ~/>_ WORKING WITH DPLYR

  5. data <- data %>% mutate(poc = recode(race, "White" = "White", .default = "Non-White"), days_old = calc_age(born, start_year, "day"), months_old = calc_age(born, start_year, "month"), full_name = paste(first, last, suffix), full_name = stringr::str_remove(full_name, " NA$"), entry_age = calc_age(born, start), yr_fac = factor(year(start_year)))

  6. median_age_party <- data %>% filter(position == "U.S. Representative") %>% group_by(congress, party) %>% summarize(year = first(start_year), median_age = median(start_age)) %>% filter(party % in % c("Democrat", "Republican")) median_age_party

  7. oldest_group_by_year <- data %>% filter(party % in % c("Democrat", "Republican"), position == "U.S. Representative") %>% group_by(congress, party) %>% filter(start_age > quantile(start_age, 0.99, na.rm = TRUE)) youngest_group_by_year <- data %>% filter(party % in % c("Democrat", "Republican"), position == "U.S. Representative") %>% group_by(congress, party) %>% filter(start_age < quantile(start_age, 0.01, na.rm = TRUE))

  8. data %>% select(start_year, job_type1) %>% group_by(start_year, job_type1) %>% summarize(n = n()) %>% mutate(pct = (n/sum(n))*100)

  9. data %>% select(start_year, job_type1) %>% group_by(start_year, job_type1) %>% summarize(n = n()) %>% mutate(pct = (n/sum(n))*100) %>% group_by(start_year) %>% top_n(3, wt = pct)

  10. data %>% select(start_year, job_type1) %>% group_by(start_year, job_type1) %>% summarize(n = n()) %>% mutate(pct = (n/sum(n))*100) %>% group_by(start_year) %>% top_n(3, wt = pct)

  11. data %>% select(start_year, job_type1) %>% group_by(start_year, job_type1) %>% summarize(n = n()) %>% mutate(pct = (n/sum(n))*100) %>% group_by(start_year) %>% top_n(3, wt = pct) %>% arrange(desc(pct))

  12. data %>% select(start_year, job_type1) %>% group_by(start_year, job_type1) %>% summarize(n = n()) %>% mutate(pct = (n/sum(n))*100) %>% group_by(start_year) %>% top_n(3, wt = pct) %>% arrange(desc(pct), .by_group = TRUE)

  13. ~/>_ TIDY DATA

  14. MOST DATA ANALYSIS IS CLEANING & RECODING

  15. library(socviz) library(gapminder) gapminder

  16. gdp lifexp pop continent 340 65 31 Euro 227 51 200 Amer 909 81 80 Euro 126 40 20 Asia

  17. country year cases population 1 Afghanistan 1999 745 19987071 2 Afghanistan 2000 2666 20595360 3 Brazil 1999 37737 172006362 4 Brazil 2000 80488 174504898 5 China 1999 212258 1272915272 6 China 2000 213766 1280428583

  18. country year key value 1 Afghanistan 1999 cases 745 2 Afghanistan 1999 population 19987071 3 Afghanistan 2000 cases 2666 4 Afghanistan 2000 population 20595360 5 Brazil 1999 cases 37737 6 Brazil 1999 population 172006362 7 Brazil 2000 cases 80488 8 Brazil 2000 population 174504898 9 China 1999 cases 212258 10 China 1999 population 1272915272 11 China 2000 cases 213766 12 China 2000 population 1280428583

  19. country year key value 1 Afghanistan 1999 cases 745 2 Afghanistan 1999 population 19987071 3 Afghanistan 2000 cases 2666 4 Afghanistan 2000 population 20595360 5 Brazil 1999 cases 37737 6 Brazil 1999 population 172006362 7 Brazil 2000 cases 80488 8 Brazil 2000 population 174504898 9 China 1999 cases 212258 10 China 1999 population 1272915272 11 China 2000 cases 213766 12 China 2000 population 1280428583

  20. country year rate 1 Afghanistan 1999 745/19987071 2 Afghanistan 2000 2666/20595360 3 Brazil 1999 37737/172006362 4 Brazil 2000 80488/174504898 5 China 1999 212258/1272915272 6 China 2000 213766/1280428583

  21. country 1999 2000 1 Afghanistan 745 2666 2 Brazil 37737 80488 3 China 212258 213766 country 1999 2000 1 Afghanistan 19987071 20595360 2 Brazil 172006362 174504898 3 China 1272915272 1280428583

  22. edu ## # A tibble: 366 x 11 ## age sex year total elem4 elem8 hs3 hs4 coll3 coll4 median ## <chr> <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 25-34 Male 2016 21845 116 468 1427 6386 6015 7432 NA ## 2 25-34 Male 2015 21427 166 488 1584 6198 5920 7071 NA ## 3 25-34 Male 2014 21217 151 512 1611 6323 5910 6710 NA ## 4 25-34 Male 2013 20816 161 582 1747 6058 5749 6519 NA ## 5 25-34 Male 2012 20464 161 579 1707 6127 5619 6270 NA ## 6 25-34 Male 2011 20985 190 657 1791 6444 5750 6151 NA ## 7 25-34 Male 2010 20689 186 641 1866 6458 5587 5951 NA ## 8 25-34 Male 2009 20440 184 695 1806 6495 5508 5752 NA ## 9 25-34 Male 2008 20210 172 714 1874 6356 5277 5816 NA ## 10 25-34 Male 2007 20024 246 757 1930 6361 5137 5593 NA ## # ... with 356 more rows

  23. edu_t <- gather (data = edu, key = school, value = freq, elem4:coll4) head (edu_t) ## # A tibble: 6 x 7 ## age sex year total median school freq ## <chr> <chr> <int> <int> <dbl> <chr> <dbl> ## 1 25-34 Male 2016 21845 NA elem4 116 ## 2 25-34 Male 2015 21427 NA elem4 166 ## 3 25-34 Male 2014 21217 NA elem4 151 ## 4 25-34 Male 2013 20816 NA elem4 161 ## 5 25-34 Male 2012 20464 NA elem4 161 ## 6 25-34 Male 2011 20985 NA elem4 190 tail (edu_t) ## # A tibble: 6 x 7 ## age sex year total median school freq ## <chr> <chr> <int> <int> <dbl> <chr> <dbl> ## 1 55> Female 1959 16263 8.30 coll4 688 ## 2 55> Female 1957 15581 8.20 coll4 630 ## 3 55> Female 1952 13662 7.90 coll4 628 ## 4 55> Female 1950 13150 8.40 coll4 436 ## 5 55> Female 1947 11810 7.60 coll4 343 ## 6 55> Female 1940 9777 8.30 coll4 219

  24. ~/>_ TABLE JOINS

  25. Spi ff y Join Animatations courtesy Garrick Aden-Buie: github.com/gadenbuie/join-animations-with-gganimate.R

  26. All rows from x, and all columns from x and y. Rows in x with no match in y will have NA values in the new columns. LEFT JOIN

  27. If there are multiple matches between x and y, all combinations of the matches are returned. LEFT JOIN

  28. All rows from x where there are matching values in y, and all columns from x and y. INNER JOIN

  29. All rows and all columns from both x and y. Where there are not matching values, returns NA for the one missing. FULL JOIN

  30. All rows from x where there are matching values in y, keeping just columns from x. SEMI JOIN

  31. All rows from x where there are not matching values in y, keeping just columns from x. ANTI JOIN

  32. senate <- data %>% filter(position == "U.S. Senator") %>% group_by(pid) %>% summarize(first = first(first), last = first(last), party = first(party), state = first(state), start = first(start), end = first(end)) house <- data %>% filter(position == "U.S. Representative") %>% group_by(pid) %>% summarize(state = first(state), district = first(district), start = first(start), end = first(end))

  33. sen_and_house <- inner_join(senate, house, by = "pid")

  34. str_detect(string, pattern) str_replace(string, pattern, replacement) REGEXPS STRINGR

  35. REGEXPS

  36. str_detect(string, pattern) str_replace(string, pattern, replacement) REGEXPS STRINGR

  37. mutate(full_name = paste(first, last, suffix), full_name = str_remove(full_name, " NA$")) REGEXPS STRINGR

  38. REGEXPS STRINGR

Recommend


More recommend