suppressPackageStartupMessages(library("tidyverse"))
package 㤼㸱tidyverse㤼㸲 was built under R version 3.6.3

1. How have the proportions of people identifying as Democrat, Republican, and Independent changed over time?

To answer that, we need to combine the multiple levels into Democrat, Republican, and Independent

levels(gss_cat$partyid)
 [1] "No answer"          "Don't know"         "Other party"        "Strong republican" 
 [5] "Not str republican" "Ind,near rep"       "Independent"        "Ind,near dem"      
 [9] "Not str democrat"   "Strong democrat"   
gss_cat %>%
  mutate(
    partyid =
      fct_collapse(partyid,
        other = c("No answer", "Don't know", "Other party"),
        rep = c("Strong republican", "Not str republican"),
        ind = c("Ind,near rep", "Independent", "Ind,near dem"),
        dem = c("Not str democrat", "Strong democrat")
      )
  ) %>%
  count(year, partyid) %>%
  group_by(year) %>%
  mutate(p = n / sum(n)) %>%
  ggplot(aes(
    x = year, y = p,
    colour = fct_reorder2(partyid, year, p)
  )) +
  geom_point() +
  geom_line() +
  labs(colour = "Party ID.")

2. How could you collapse rincome into a small set of categories?

Group all the non-responses into one category, and then group other categories into a smaller number. Since there is a clear ordering, we would not use fct_lump().

levels(gss_cat$rincome)
 [1] "No answer"      "Don't know"     "Refused"        "$25000 or more" "$20000 - 24999"
 [6] "$15000 - 19999" "$10000 - 14999" "$8000 to 9999"  "$7000 to 7999"  "$6000 to 6999" 
[11] "$5000 to 5999"  "$4000 to 4999"  "$3000 to 3999"  "$1000 to 2999"  "Lt $1000"      
[16] "Not applicable"
library("stringr")
gss_cat %>%
  mutate(
    rincome =
      fct_collapse(
        rincome,
        `Unknown` = c("No answer", "Don't know", "Refused", "Not applicable"),
        `Lt $5000` = c("Lt $1000", str_c(
          "$", c("1000", "3000", "4000"),
          " to ", c("2999", "3999", "4999")
        )),
        `$5000 to 10000` = str_c(
          "$", c("5000", "6000", "7000", "8000"),
          " to ", c("5999", "6999", "7999", "9999")
        )
      )
  ) %>%
  ggplot(aes(x = rincome)) +
  geom_bar() +
  coord_flip()

LS0tDQp0aXRsZTogIk1vZGlmeWluZyBmYWN0b3IgbGV2ZWxzIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQpgYGB7cn0NCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KCJ0aWR5dmVyc2UiKSkNCmBgYA0KDQojIyMgMS4gSG93IGhhdmUgdGhlIHByb3BvcnRpb25zIG9mIHBlb3BsZSBpZGVudGlmeWluZyBhcyBEZW1vY3JhdCwgUmVwdWJsaWNhbiwgYW5kIEluZGVwZW5kZW50IGNoYW5nZWQgb3ZlciB0aW1lPw0KDQpUbyBhbnN3ZXIgdGhhdCwgd2UgbmVlZCB0byBjb21iaW5lIHRoZSBtdWx0aXBsZSBsZXZlbHMgaW50byBEZW1vY3JhdCwgUmVwdWJsaWNhbiwgYW5kIEluZGVwZW5kZW50DQoNCmBgYHtyfQ0KbGV2ZWxzKGdzc19jYXQkcGFydHlpZCkNCmdzc19jYXQgJT4lDQogIG11dGF0ZSgNCiAgICBwYXJ0eWlkID0NCiAgICAgIGZjdF9jb2xsYXBzZShwYXJ0eWlkLA0KICAgICAgICBvdGhlciA9IGMoIk5vIGFuc3dlciIsICJEb24ndCBrbm93IiwgIk90aGVyIHBhcnR5IiksDQogICAgICAgIHJlcCA9IGMoIlN0cm9uZyByZXB1YmxpY2FuIiwgIk5vdCBzdHIgcmVwdWJsaWNhbiIpLA0KICAgICAgICBpbmQgPSBjKCJJbmQsbmVhciByZXAiLCAiSW5kZXBlbmRlbnQiLCAiSW5kLG5lYXIgZGVtIiksDQogICAgICAgIGRlbSA9IGMoIk5vdCBzdHIgZGVtb2NyYXQiLCAiU3Ryb25nIGRlbW9jcmF0IikNCiAgICAgICkNCiAgKSAlPiUNCiAgY291bnQoeWVhciwgcGFydHlpZCkgJT4lDQogIGdyb3VwX2J5KHllYXIpICU+JQ0KICBtdXRhdGUocCA9IG4gLyBzdW0obikpICU+JQ0KICBnZ3Bsb3QoYWVzKA0KICAgIHggPSB5ZWFyLCB5ID0gcCwNCiAgICBjb2xvdXIgPSBmY3RfcmVvcmRlcjIocGFydHlpZCwgeWVhciwgcCkNCiAgKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZW9tX2xpbmUoKSArDQogIGxhYnMoY29sb3VyID0gIlBhcnR5IElELiIpDQpgYGANCg0KIyMjIDIuIEhvdyBjb3VsZCB5b3UgY29sbGFwc2UgYHJpbmNvbWVgIGludG8gYSBzbWFsbCBzZXQgb2YgY2F0ZWdvcmllcz8NCg0KR3JvdXAgYWxsIHRoZSBub24tcmVzcG9uc2VzIGludG8gb25lIGNhdGVnb3J5LCBhbmQgdGhlbiBncm91cCBvdGhlciBjYXRlZ29yaWVzIGludG8gYSBzbWFsbGVyIG51bWJlci4gU2luY2UgdGhlcmUgaXMgYSBjbGVhciBvcmRlcmluZywgd2Ugd291bGQgbm90IHVzZSBgZmN0X2x1bXAoKWAuDQoNCmBgYHtyfQ0KbGV2ZWxzKGdzc19jYXQkcmluY29tZSkNCmxpYnJhcnkoInN0cmluZ3IiKQ0KZ3NzX2NhdCAlPiUNCiAgbXV0YXRlKA0KICAgIHJpbmNvbWUgPQ0KICAgICAgZmN0X2NvbGxhcHNlKA0KICAgICAgICByaW5jb21lLA0KICAgICAgICBgVW5rbm93bmAgPSBjKCJObyBhbnN3ZXIiLCAiRG9uJ3Qga25vdyIsICJSZWZ1c2VkIiwgIk5vdCBhcHBsaWNhYmxlIiksDQogICAgICAgIGBMdCAkNTAwMGAgPSBjKCJMdCAkMTAwMCIsIHN0cl9jKA0KICAgICAgICAgICIkIiwgYygiMTAwMCIsICIzMDAwIiwgIjQwMDAiKSwNCiAgICAgICAgICAiIHRvICIsIGMoIjI5OTkiLCAiMzk5OSIsICI0OTk5IikNCiAgICAgICAgKSksDQogICAgICAgIGAkNTAwMCB0byAxMDAwMGAgPSBzdHJfYygNCiAgICAgICAgICAiJCIsIGMoIjUwMDAiLCAiNjAwMCIsICI3MDAwIiwgIjgwMDAiKSwNCiAgICAgICAgICAiIHRvICIsIGMoIjU5OTkiLCAiNjk5OSIsICI3OTk5IiwgIjk5OTkiKQ0KICAgICAgICApDQogICAgICApDQogICkgJT4lDQogIGdncGxvdChhZXMoeCA9IHJpbmNvbWUpKSArDQogIGdlb21fYmFyKCkgKw0KICBjb29yZF9mbGlwKCkNCmBgYA==