Loading, setting up

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.3     ✓ purrr   0.3.4
## ✓ tibble  3.0.6     ✓ dplyr   1.0.3
## ✓ tidyr   1.1.2     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(rtweet)
## 
## Attaching package: 'rtweet'
## The following object is masked from 'package:purrr':
## 
##     flatten
library(googlesheets4)
library(tidytags) # tidytags::process_tweets(searched_statuses)
## 
## Attaching package: 'tidytags'
## The following objects are masked from 'package:rtweet':
## 
##     get_mentions, get_retweets
d <- googlesheets4::read_sheet("https://docs.google.com/spreadsheets/d/1rlcFPlUgPMH-N30AMXNylSwUIl59qe5ECn7_kNaB53E/edit#gid=580742975")
## Using an auto-discovered, cached token.
## To suppress this message, modify your code or options to clearly consent to the use of a cached token.
## See gargle's "Non-interactive auth" vignette for more details:
## https://gargle.r-lib.org/articles/non-interactive-auth.html
## The googlesheets4 package is using a cached token for jrosenb8@utk.edu.
## Auto-refreshing stale OAuth token.
## Reading from "tweets_random_sample"
## Range "tweets_random_sample"
# d <- read_csv(here('data', 'sample-of-tweets.csv'),
#               col_types = cols(
#                 id_str = col_character()
#               ))

d_level3 <- select(d, status_id = id_str, level3, created_at)

# searched_statuses <- tidytags::pull_tweet_data(id_vector = d_level3$status_id)
# 
# write_rds(searched_statuses, "searched-statuses.rds")

searched_statuses <- read_rds("searched-statuses.rds")

searched_statuses <- tidytags::process_tweets(searched_statuses)

searched_statuses %>% 
  skimr::skim() %>% 
  knitr::kable()
## Warning in min.default(structure(c(NA_real_, NA_real_, NA_real_, NA_real_, : no
## non-missing arguments to min; returning Inf
## Warning in max.default(structure(c(NA_real_, NA_real_, NA_real_, NA_real_, : no
## non-missing arguments to max; returning -Inf
skim_type skim_variable n_missing complete_rate character.min character.max character.empty character.n_unique character.whitespace list.n_unique list.min_length list.max_length logical.mean logical.count numeric.mean numeric.sd numeric.p0 numeric.p25 numeric.p50 numeric.p75 numeric.p100 numeric.hist POSIXct.min POSIXct.max POSIXct.median POSIXct.n_unique
character user_id 0 1.0000000 8 18 0 492 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character status_id 0 1.0000000 19 19 0 1352 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character screen_name 0 1.0000000 4 15 0 492 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character text 0 1.0000000 21 320 0 1352 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character source 0 1.0000000 5 32 0 32 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character reply_to_status_id 1251 0.0747041 19 19 0 100 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character reply_to_user_id 1238 0.0843195 8 19 0 101 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character reply_to_screen_name 1238 0.0843195 5 15 0 101 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character ext_media_type 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character lang 0 1.0000000 2 3 0 9 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_status_id 1182 0.1257396 19 19 0 170 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_text 1182 0.1257396 40 308 0 170 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_source 1182 0.1257396 5 20 0 17 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_user_id 1182 0.1257396 7 19 0 167 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_screen_name 1182 0.1257396 5 15 0 167 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_name 1182 0.1257396 4 50 0 167 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_location 1182 0.1257396 0 33 48 112 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character quoted_description 1182 0.1257396 0 162 24 144 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_status_id 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_text 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_source 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_user_id 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_screen_name 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_name 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_location 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character retweet_description 1352 0.0000000 NA NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character place_url 1301 0.0377219 56 56 0 34 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character place_name 1301 0.0377219 4 31 0 34 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character place_full_name 1301 0.0377219 8 31 0 34 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character place_type 1301 0.0377219 3 5 0 3 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character country 1301 0.0377219 13 13 0 1 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character country_code 1301 0.0377219 2 2 0 1 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character status_url 0 1.0000000 51 62 0 1352 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character name 0 1.0000000 3 45 0 491 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character location 0 1.0000000 0 38 74 458 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character description 0 1.0000000 0 166 10 488 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character url 65 0.9519231 20 24 0 466 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character profile_url 65 0.9519231 20 24 0 466 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character profile_expanded_url 67 0.9504438 14 82 0 465 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character profile_banner_url 69 0.9489645 57 67 0 461 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character profile_background_url 35 0.9741124 48 49 0 18 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
character profile_image_url 0 1.0000000 59 99 0 492 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list hashtags 755 0.4415680 NA NA NA NA NA 459 1 9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list symbols 1352 0.0000000 NA NA NA NA NA 0 1 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list urls_url 669 0.5051775 NA NA NA NA NA 650 1 5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list urls_t.co 669 0.5051775 NA NA NA NA NA 674 1 5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list urls_expanded_url 669 0.5051775 NA NA NA NA NA 671 1 5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list media_url 552 0.5917160 NA NA NA NA NA 800 1 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list media_t.co 552 0.5917160 NA NA NA NA NA 800 1 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list media_expanded_url 552 0.5917160 NA NA NA NA NA 800 1 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list media_type 552 0.5917160 NA NA NA NA NA 1 1 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list ext_media_url 552 0.5917160 NA NA NA NA NA 800 1 4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list ext_media_t.co 552 0.5917160 NA NA NA NA NA 800 1 4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list ext_media_expanded_url 552 0.5917160 NA NA NA NA NA 800 1 4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list mentions_user_id 1003 0.2581361 NA NA NA NA NA 333 1 10 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list mentions_screen_name 1003 0.2581361 NA NA NA NA NA 333 1 10 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list geo_coords 0 1.0000000 NA NA NA NA NA 5 2 2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list coords_coords 0 1.0000000 NA NA NA NA NA 5 2 2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
list bbox_coords 0 1.0000000 NA NA NA NA NA 35 8 8 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
logical is_quote 0 1.0000000 NA NA NA NA NA NA NA NA 0.1257396 FAL: 1182, TRU: 170 NA NA NA NA NA NA NA NA NA NA NA NA
logical is_retweet 0 1.0000000 NA NA NA NA NA NA NA NA 0.0000000 FAL: 1352 NA NA NA NA NA NA NA NA NA NA NA NA
logical quoted_verified 1182 0.1257396 NA NA NA NA NA NA NA NA 0.0823529 FAL: 156, TRU: 14 NA NA NA NA NA NA NA NA NA NA NA NA
logical retweet_verified 1352 0.0000000 NA NA NA NA NA NA NA NA NaN : NA NA NA NA NA NA NA NA NA NA NA NA
logical protected 0 1.0000000 NA NA NA NA NA NA NA NA 0.0000000 FAL: 1352 NA NA NA NA NA NA NA NA NA NA NA NA
logical verified 0 1.0000000 NA NA NA NA NA NA NA NA 0.1649408 FAL: 1129, TRU: 223 NA NA NA NA NA NA NA NA NA NA NA NA
logical account_lang 1352 0.0000000 NA NA NA NA NA NA NA NA NaN : NA NA NA NA NA NA NA NA NA NA NA NA
logical has_hashtags 0 1.0000000 NA NA NA NA NA NA NA NA 0.4452663 FAL: 750, TRU: 602 NA NA NA NA NA NA NA NA NA NA NA NA
logical is_reply 0 1.0000000 NA NA NA NA NA NA NA NA 0.0747041 FAL: 1251, TRU: 101 NA NA NA NA NA NA NA NA NA NA NA NA
logical is_self_reply 0 1.0000000 NA NA NA NA NA NA NA NA 0.0362426 FAL: 1303, TRU: 49 NA NA NA NA NA NA NA NA NA NA NA NA
numeric display_text_width 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 1.636324e+02 8.632258e+01 0 95.00 167.0 245.00 292 ▅▅▆▅▇ NA NA NA NA
numeric favorite_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 1.332914e+01 3.143010e+01 0 1.00 5.0 13.00 534 ▇▁▁▁▁ NA NA NA NA
numeric retweet_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 4.289941e+00 1.237516e+01 0 0.00 1.0 4.00 242 ▇▁▁▁▁ NA NA NA NA
numeric quote_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric reply_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric quoted_favorite_count 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA 7.199412e+01 3.532648e+02 0 6.25 14.0 23.75 3444 ▇▁▁▁▁ NA NA NA NA
numeric quoted_retweet_count 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA 2.238824e+01 1.120557e+02 0 0.00 2.0 5.75 904 ▇▁▁▁▁ NA NA NA NA
numeric quoted_followers_count 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA 1.697046e+04 1.005753e+05 16 207.00 583.5 1931.50 1187408 ▇▁▁▁▁ NA NA NA NA
numeric quoted_friends_count 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA 1.304641e+03 6.350308e+03 0 105.25 233.5 625.00 67834 ▇▁▁▁▁ NA NA NA NA
numeric quoted_statuses_count 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA 7.507741e+03 1.634642e+04 29 579.00 1949.0 6802.25 123931 ▇▁▁▁▁ NA NA NA NA
numeric retweet_favorite_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric retweet_retweet_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric retweet_followers_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric retweet_friends_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric retweet_statuses_count 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NaN NA NA NA NA NA NA NA NA NA NA
numeric followers_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 8.313342e+03 1.949865e+04 26 1186.00 2667.0 5603.00 155292 ▇▁▁▁▁ NA NA NA NA
numeric friends_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 4.501538e+02 5.980225e+02 0 99.75 255.0 589.00 4438 ▇▁▁▁▁ NA NA NA NA
numeric listed_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 6.941346e+01 1.017685e+02 0 11.00 28.0 82.00 984 ▇▁▁▁▁ NA NA NA NA
numeric statuses_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 8.424462e+03 8.453235e+03 136 2964.00 5945.0 10746.00 81988 ▇▁▁▁▁ NA NA NA NA
numeric favourites_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 4.601480e+03 8.026495e+03 0 382.00 2034.5 6113.00 97859 ▇▁▁▁▁ NA NA NA NA
numeric word_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 2.520488e+01 1.368305e+01 1 14.00 25.0 37.00 56 ▇▇▇▇▂ NA NA NA NA
numeric character_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 1.818314e+02 8.554883e+01 21 112.75 185.0 263.00 320 ▅▆▆▆▇ NA NA NA NA
numeric mentions_count 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 4.622781e-01 1.069071e+00 0 0.00 0.0 1.00 10 ▇▁▁▁▁ NA NA NA NA
numeric hashtags_count_api 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 7.307692e-01 1.066966e+00 0 0.00 0.0 1.00 9 ▇▂▁▁▁ NA NA NA NA
numeric hashtags_count_regex 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 7.374260e-01 1.072428e+00 0 0.00 0.0 1.00 9 ▇▂▁▁▁ NA NA NA NA
numeric urls_count_api 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 5.377219e-01 5.733252e-01 0 0.00 1.0 1.00 5 ▇▁▁▁▁ NA NA NA NA
numeric urls_count_regex 0 1.0000000 NA NA NA NA NA NA NA NA NA NA 1.129438e+00 6.073497e-01 0 1.00 1.0 1.00 5 ▇▂▁▁▁ NA NA NA NA
POSIXct created_at 0 1.0000000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2020-03-01 00:29:08 2020-04-24 19:16:23 2020-03-27 12:52:08 1352
POSIXct quoted_created_at 1182 0.1257396 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2020-02-20 16:36:56 2020-04-24 15:40:08 2020-03-27 03:50:55 170
POSIXct retweet_created_at 1352 0.0000000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0
POSIXct account_created_at 0 1.0000000 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2008-04-08 02:19:27 2016-09-28 16:57:48 2011-09-20 05:00:49 492
users_data <- rtweet::users_data(searched_statuses) %>%
  distinct(user_id, .keep_all = T)

users_data %>%
  skimr::skim()
Data summary
Name Piped data
Number of rows 492
Number of columns 20
_______________________
Column type frequency:
character 11
logical 3
numeric 5
POSIXct 1
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
user_id 0 1.00 8 18 0 492 0
screen_name 0 1.00 4 15 0 492 0
name 0 1.00 3 45 0 491 0
location 0 1.00 0 38 27 458 0
description 0 1.00 0 166 5 488 0
url 26 0.95 20 24 0 466 0
profile_url 26 0.95 20 24 0 466 0
profile_expanded_url 27 0.95 14 82 0 465 0
profile_banner_url 31 0.94 57 67 0 461 0
profile_background_url 14 0.97 48 49 0 18 0
profile_image_url 0 1.00 59 99 0 492 0

Variable type: logical

skim_variable n_missing complete_rate mean count
protected 0 1 0.00 FAL: 492
verified 0 1 0.11 FAL: 439, TRU: 53
account_lang 492 0 NaN :

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
followers_count 0 1 5006.44 13054.00 26 893.50 1965.0 4244.00 155292 ▇▁▁▁▁
friends_count 0 1 347.27 523.58 0 72.75 183.0 409.50 4438 ▇▁▁▁▁
listed_count 0 1 47.04 80.08 0 9.00 20.0 51.00 984 ▇▁▁▁▁
statuses_count 0 1 6238.60 7575.41 136 1983.50 3894.5 7491.25 81988 ▇▁▁▁▁
favourites_count 0 1 3438.78 7613.43 0 190.50 1011.5 3947.50 97859 ▇▁▁▁▁

Variable type: POSIXct

skim_variable n_missing complete_rate min max median n_unique
account_created_at 0 1 2008-04-08 02:19:27 2016-09-28 16:57:48 2012-02-12 04:18:07 492

Interactions

dd <- searched_statuses %>%
  select(favorite_count, retweet_count, status_id) %>%
  left_join(d_level3)
## Joining, by = "status_id"
interactions_table_back <- dd %>%
  group_by(level3) %>%
  mutate(total_interactions = favorite_count + retweet_count) %>%
  summarize(mean_fav = mean(favorite_count),
            sd_fav = sd(favorite_count),
            mean_rt = mean(retweet_count),
            sd_rt = sd(retweet_count),
            mean_total = mean(total_interactions),
            median_total = median(total_interactions),
            sd_total = sd(total_interactions)) %>%
  arrange(desc(mean_total))

interactions_table_back %>% 
  knitr::kable()
level3 mean_fav sd_fav mean_rt sd_rt mean_total median_total sd_total
School Closings 27.851852 51.05580 16.870370 30.8453515 44.722222 11.5 81.0409672
Meals 19.212500 39.88455 11.150000 29.2890873 30.362500 11.5 67.1699608
Remote Learning 12.504587 30.28892 6.752294 12.5817004 19.256881 8.0 41.9747287
Staff Highlight 16.898148 23.41137 2.277778 3.6193492 19.175926 11.0 26.3328190
Student Highlight 16.595506 26.02128 2.101124 3.6619820 18.696629 9.0 29.1677766
Community Highlight 15.861111 17.08993 2.694444 3.9120287 18.555556 12.5 20.3335675
Spreading Positive Messages 15.759036 23.16199 2.722892 4.5164017 18.481928 9.0 26.6047683
Universal Announcements 12.326923 28.78534 5.955128 13.2559630 18.282051 5.0 40.8638644
Health Resources 10.232143 18.06452 4.142857 6.9581308 14.375000 6.0 24.4774943
Requests 10.566667 23.19584 3.233333 4.6139469 13.800000 6.0 27.3576567
Multiple 10.318182 11.19263 3.363636 4.8554874 13.681818 7.5 15.4346128
Unrelated to COVID 11.546961 39.73715 1.853591 5.3408063 13.400552 5.0 44.6688313
Events 8.701613 16.11290 3.645161 7.6149121 12.346774 5.0 22.9941825
Direct Reply 3.410256 12.56712 1.205128 5.4588387 4.615385 1.0 17.9687087
Ambiguous 1.000000 0.00000 0.750000 0.9574271 1.750000 1.5 0.9574271
dd %>%
  group_by(level3) %>%
  mutate(total_interactions = favorite_count + retweet_count) %>%
  select(total_interactions) %>% 
  skimr::skim() %>% 
  knitr::kable()
## Adding missing grouping variables: `level3`
skim_type skim_variable level3 n_missing complete_rate numeric.mean numeric.sd numeric.p0 numeric.p25 numeric.p50 numeric.p75 numeric.p100 numeric.hist
numeric total_interactions Ambiguous 0 1 1.750000 0.9574271 1 1.00 1.5 2.25 3 ▇▁▃▁▃
numeric total_interactions Community Highlight 0 1 18.555556 20.3335675 0 7.75 12.5 21.50 106 ▇▂▁▁▁
numeric total_interactions Direct Reply 0 1 4.615385 17.9687087 0 0.00 1.0 2.50 113 ▇▁▁▁▁
numeric total_interactions Events 0 1 12.346774 22.9941825 0 2.00 5.0 13.25 155 ▇▁▁▁▁
numeric total_interactions Health Resources 0 1 14.375000 24.4774943 0 2.00 6.0 14.25 134 ▇▁▁▁▁
numeric total_interactions Meals 0 1 30.362500 67.1699608 0 4.00 11.5 24.00 532 ▇▁▁▁▁
numeric total_interactions Multiple 0 1 13.681818 15.4346128 0 3.50 7.5 17.50 53 ▇▂▁▁▁
numeric total_interactions Remote Learning 0 1 19.256881 41.9747287 0 3.00 8.0 18.00 395 ▇▁▁▁▁
numeric total_interactions Requests 0 1 13.800000 27.3576567 0 2.00 6.0 13.50 147 ▇▁▁▁▁
numeric total_interactions School Closings 0 1 44.722222 81.0409672 0 3.25 11.5 39.50 364 ▇▁▁▁▁
numeric total_interactions Spreading Positive Messages 0 1 18.481928 26.6047683 0 3.00 9.0 21.50 139 ▇▁▁▁▁
numeric total_interactions Staff Highlight 0 1 19.175926 26.3328190 0 5.00 11.0 22.00 171 ▇▁▁▁▁
numeric total_interactions Student Highlight 0 1 18.696629 29.1677766 0 3.00 9.0 19.00 164 ▇▁▁▁▁
numeric total_interactions Universal Announcements 0 1 18.282051 40.8638644 0 2.00 5.0 15.00 285 ▇▁▁▁▁
numeric total_interactions Unrelated to COVID 0 1 13.400552 44.6688313 0 1.00 5.0 12.00 599 ▇▁▁▁▁

Time series

ddd <- d_level3 %>%
  mutate(created_at = lubridate::ymd_hms(created_at)) %>%
  mutate(day = lubridate::round_date(created_at, unit = "day")) %>%
  mutate(day = day - lubridate::days(4)) %>% 
  mutate(week = lubridate::round_date(day, unit = "week")) %>%
  count(week, level3) %>%
  spread(level3, n, fill = 0) %>%
  gather(key, val, -week) %>%
  mutate(week_int = lubridate::week(week))
# mutate(val = ifelse(week == lubridate::ymd("2020-03-01"), val * (1 + 4/3), 
#                      ifelse(week == lubridate::ymd("2020-04-26"), val * (1 + 3/4),
#                              val)))

top_codes <- d %>%
  count(level3, sort = TRUE) %>%
  filter(n > 25) %>%
  rename(key = level3)

dddd <- ddd %>%
  semi_join(top_codes)
## Joining, by = "key"
dddd
## # A tibble: 117 x 4
##    week                key                   val week_int
##    <dttm>              <chr>               <dbl>    <dbl>
##  1 2020-02-23 00:00:00 Community Highlight     0        8
##  2 2020-03-01 00:00:00 Community Highlight     0        9
##  3 2020-03-08 00:00:00 Community Highlight     0       10
##  4 2020-03-15 00:00:00 Community Highlight     6       11
##  5 2020-03-22 00:00:00 Community Highlight     6       12
##  6 2020-03-29 00:00:00 Community Highlight     4       13
##  7 2020-04-05 00:00:00 Community Highlight     5       14
##  8 2020-04-12 00:00:00 Community Highlight     6       15
##  9 2020-04-19 00:00:00 Community Highlight     9       16
## 10 2020-02-23 00:00:00 Direct Reply            0        8
## # … with 107 more rows
dddd %>%
  ggplot(aes(x = week, y = val)) +
  geom_point(color = "darkgray") +
  geom_line() +
  facet_wrap(~key, scales = "free_y") +
  theme_minimal() +
  #geom_line() +
  scale_color_brewer(type = "qual") +
  ylab("Number of Posts") +
  xlab(NULL) +
  theme(text = element_text(size = 13, family = "Times")) +
  theme(panel.grid.minor = element_blank()) +
  scale_x_datetime(labels = scales::date_format("%m-%d")) +
  geom_vline(xintercept = lubridate::ymd_hms("2020-03-17 00:00:00"), alpha = .5, linetype = "dashed") +
  labs(caption = "Note. Dashed line indicates the median date on which districts closed.")

peaking around closures

remote learning, school closings, universal announcements, meals, requests, direct reply

library(ggtext)

ggplot(subset(dddd, key %in% c("Direct Reply", "Remote Learning", "Meals", "Universal Announcements", "Requests", "School Closings")),
       aes(x = week, y = val, group = key, color = key)) +
  geom_point(size = 1.5) +
  #geom_point(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  #geom_line(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  geom_line(size = 1) +
  # facet_wrap(~key, scales = "free_y") +
  theme_bw() +
  #geom_line() +
  scale_color_brewer("", type = "qual", palette = 2) +
  ylab("Number of Posts") +
  xlab(NULL) +
  theme(text = element_text(size = 16, family = "Times")) +
  scale_x_datetime(labels = scales::date_format("%m-%d")) +
  geom_vline(xintercept = lubridate::ymd_hms("2020-03-17 00:00:00"), alpha = .5, linetype = "dashed") +
  labs(caption = "*Note*. Dashed line indicates the median date on which districts closed.") +
  ylim(0, 35) + 
  theme(plot.caption = element_markdown(lineheight = 1.2)) +
  labs(subtitle = "Peaking in Frequency Around Closures")

ggsave("pattern-2.png", width = 10, height = 7)

peaking later

spreading positive messages, staff highlight, student highlight, community highlight, health resources, events

ggplot(subset(dddd, key %in% c("Spreading Positive Messages", "Staff Highlight", "Student Highlight", "Community Highlight", "Helath Resources", "Events")),
       aes(x = week, y = val, group = key, color = key)) +
  geom_point(size = 1.5) +
  #geom_point(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  #geom_line(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  geom_line(size = 1) +
  # facet_wrap(~key, scales = "free_y") +
  theme_bw() +
  #geom_line() +
  scale_color_brewer("", type = "qual", palette = 3) +
  ylab("Number of Posts") +
  xlab(NULL) +
  theme(text = element_text(size = 16, family = "Times")) +
  scale_x_datetime(labels = scales::date_format("%m-%d")) +
  geom_vline(xintercept = lubridate::ymd_hms("2020-03-17 00:00:00"), alpha = .7, linetype = "dashed") +
  labs(caption = "*Note*. Dashed line indicates the median date on which districts closed.") +
  ylim(0, 35) + 
  theme(plot.caption = element_markdown(lineheight = 1.2)) +
  labs(subtitle = "Peaking in Frequency Following Closures")

ggsave("pattern-3.png", width = 10, height = 7)

declining after beginning frequent

unrelated to COVID

ggplot(subset(dddd, key %in% c("Unrelated to COVID")),
       aes(x = week, y = val, group = key, color = key)) +
  geom_point(size = 1.5) +
  #geom_point(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  #geom_line(data = dddd, aes(x = week, y = val, group = key), color = "#DCDCDC") +
  geom_line(size = 1) +
  # facet_wrap(~key, scales = "free_y") +
  theme_bw() +
  #geom_line() +
  scale_color_brewer("", type = "qual", palette = 1) +
  ylab("Number of Posts") +
  xlab(NULL) +
  theme(text = element_text(size = 16, family = "Times")) +
  scale_x_datetime(labels = scales::date_format("%m-%d")) +
  geom_vline(xintercept = lubridate::ymd_hms("2020-03-17 00:00:00"), alpha = .5, linetype = "dashed") +
  labs(caption = "*Note*. Dashed line indicates the median date on which districts closed.") +
  theme(plot.caption = element_markdown(lineheight = 1.2)) +
  labs(subtitle = "Declining in Frequency Following Closures")

ggsave("pattern-1.png", width = 10, height = 7)