Assignment:

  1. Get Trump’s tweets (realDonaldTrump) using get_timeline(). (You won’t need to use search_tweets() for this assignment.)
  2. Find which hashtags he uses most and make a table.
  3. Make a table of the number of tweets each day, and find the overall average number of tweets per day.
  4. Create a plotly graphic of the number of tweets per day.
  5. Create a table and a plotly histogram of the hour of the day that Trump tweets.
  6. Create a table and a plotly histogram of the week days that Trump tweets.
  7. Create a plotly heatmap of the weekday and time of day that Trump tweets.
  8. Annotate the analysis and publish to rpubs.com.
library(tidyverse)
library(DT)
library(plotly)               # This package does interactive graphs
library(rtweet)               # This package accesses Twitter data

  
token <- create_token(
  app = "BreannaRiesen",
  consumer_key = "w6ReyWBcTZ9okuiCcU0tkdh4M",
  consumer_secret = "OTg1Wj3DXXPNCV8dh4BP1S3o92KUxFK8eKeleqwSgixTsU75tf",
  access_token = "1231727014568022016-53dfGwerymTvmjqR3EGvNS4qc0sHEg",
  access_secret = "VhAvieVsyxiIBnLoR6FnQ5PuLS3C5SnYhNDa4EhzBZUbj")
get_timeline(realDonaldTrump)
about_trump %>% 
  select(hashtags) %>%                   # Focus on the hashtags
  unnest() %>%                           # Separate multiple hashtags
  mutate(hashtags = tolower(hashtags)) %>%      # make all hashtags lowercase
  count(hashtags, sort=TRUE) %>%                # count how often they appear
  datatable()                                   # create an interactive table
realDonaldTrump_tweets %>% 
  group_by(day = date(created_at)) %>%    # extract the date, group by it
  summarize(tweets_per_day = n())         # count the number of tweets each day
realDonaldTrump_tweets %>% 
  group_by(day = date(created_at)) %>%    # extract the date, group by it
  summarize(tweets_per_day = n())         # count the number of tweets each day summarize(mean(tweets_per_day)) %>% 
realDonaldTrump_tweets %>%
  mutate(day = date(created_at)) %>% 
  plot_ly(x = ~day) %>%                                        
  add_histogram() %>% 
  layout(title = "Number of tweets from @realDonaldTrump")
realDonaldTrump_tweets %>% 
  mutate(time = hour(created_at)) %>% 
  count(time) %>% 
  datatable(options = (list(pageLength = 24)), rownames = F)
realDonaldTrump_tweets %>% 
  mutate(time = with_tz(created_at, "America/New_York")) %>%    # convert to Eastern time zone
  mutate(time = hour(time)) %>%                                 # extract the hour
  plot_ly(x = ~time) %>%                                        # create plotly graph
  add_histogram() %>%                                               # make 
  layout(title = "When Does @realDonaldTrump Tweet?", 
         xaxis = list(title = "Time of Day (0 = midnight)"),
         yaxis = list(title = "Number of Tweets"))
realDonaldTrump_tweets %>% 
  mutate(day = wday(created_at, label = T)) %>% 
  mutate(hour = hour(with_tz(created_at, "America/New_York"))) %>% 
  plot_ly(x = ~day, y = ~hour) %>% 
  add_histogram2d(nbinsx = 7, nbinsy = 24) %>% 
  layout(title = "When Does @realDonaldTrump Tweet?", 
         xaxis = list(title = "Day of the Week"),
         yaxis = list(title = "Time of Day (0 = midnight"))
LS0tCnRpdGxlOiAiUmllc2VuIFJ0d2VldHMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KQXNzaWdubWVudDoKCjEuIEdldCBUcnVtcCdzIHR3ZWV0cyAocmVhbERvbmFsZFRydW1wKSB1c2luZyBnZXRfdGltZWxpbmUoKS4gKFlvdSB3b24ndCBuZWVkIHRvIHVzZSBzZWFyY2hfdHdlZXRzKCkgZm9yIHRoaXMgYXNzaWdubWVudC4pICAgCjIuIEZpbmQgd2hpY2ggaGFzaHRhZ3MgaGUgdXNlcyBtb3N0IGFuZCBtYWtlIGEgdGFibGUuICAKMy4gTWFrZSBhIHRhYmxlIG9mIHRoZSBudW1iZXIgb2YgdHdlZXRzIGVhY2ggZGF5LCBhbmQgZmluZCB0aGUgb3ZlcmFsbCBhdmVyYWdlIG51bWJlciBvZiB0d2VldHMgcGVyIGRheS4gIAo0LiBDcmVhdGUgYSBwbG90bHkgZ3JhcGhpYyBvZiB0aGUgbnVtYmVyIG9mIHR3ZWV0cyBwZXIgZGF5LiAgCjUuIENyZWF0ZSBhIHRhYmxlIGFuZCBhIHBsb3RseSBoaXN0b2dyYW0gb2YgdGhlIGhvdXIgb2YgdGhlIGRheSB0aGF0IFRydW1wIHR3ZWV0cy4gIAo2LiBDcmVhdGUgYSB0YWJsZSBhbmQgYSBwbG90bHkgaGlzdG9ncmFtIG9mIHRoZSB3ZWVrIGRheXMgdGhhdCBUcnVtcCB0d2VldHMuICAKNy4gQ3JlYXRlIGEgcGxvdGx5IGhlYXRtYXAgb2YgdGhlIHdlZWtkYXkgYW5kIHRpbWUgb2YgZGF5IHRoYXQgVHJ1bXAgdHdlZXRzLiAgCjguIEFubm90YXRlIHRoZSBhbmFseXNpcyBhbmQgcHVibGlzaCB0byBycHVicy5jb20uIAoKCgpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoRFQpCmxpYnJhcnkocGxvdGx5KSAgICAgICAgICAgICAgICMgVGhpcyBwYWNrYWdlIGRvZXMgaW50ZXJhY3RpdmUgZ3JhcGhzCmxpYnJhcnkocnR3ZWV0KSAgICAgICAgICAgICAgICMgVGhpcyBwYWNrYWdlIGFjY2Vzc2VzIFR3aXR0ZXIgZGF0YQoKICAKYGBgCgoKYGBge3J9CnRva2VuIDwtIGNyZWF0ZV90b2tlbigKICBhcHAgPSAiQnJlYW5uYVJpZXNlbiIsCiAgY29uc3VtZXJfa2V5ID0gIiIsCiAgY29uc3VtZXJfc2VjcmV0ID0gIiIsCiAgYWNjZXNzX3Rva2VuID0gIiIsCiAgYWNjZXNzX3NlY3JldCA9ICIiKQoKYGBgCgoKCmBgYHtyfQpnZXRfdGltZWxpbmUocmVhbERvbmFsZFRydW1wKQpgYGAKCgpgYGB7cn0KYWJvdXRfdHJ1bXAgJT4lIAogIHNlbGVjdChoYXNodGFncykgJT4lICAgICAgICAgICAgICAgICAgICMgRm9jdXMgb24gdGhlIGhhc2h0YWdzCiAgdW5uZXN0KCkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXBhcmF0ZSBtdWx0aXBsZSBoYXNodGFncwogIG11dGF0ZShoYXNodGFncyA9IHRvbG93ZXIoaGFzaHRhZ3MpKSAlPiUgICAgICAjIG1ha2UgYWxsIGhhc2h0YWdzIGxvd2VyY2FzZQogIGNvdW50KGhhc2h0YWdzLCBzb3J0PVRSVUUpICU+JSAgICAgICAgICAgICAgICAjIGNvdW50IGhvdyBvZnRlbiB0aGV5IGFwcGVhcgogIGRhdGF0YWJsZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhbiBpbnRlcmFjdGl2ZSB0YWJsZQpgYGAKCgoKYGBge3J9CnJlYWxEb25hbGRUcnVtcF90d2VldHMgJT4lIAogIGdyb3VwX2J5KGRheSA9IGRhdGUoY3JlYXRlZF9hdCkpICU+JSAgICAjIGV4dHJhY3QgdGhlIGRhdGUsIGdyb3VwIGJ5IGl0CiAgc3VtbWFyaXplKHR3ZWV0c19wZXJfZGF5ID0gbigpKSAgICAgICAgICMgY291bnQgdGhlIG51bWJlciBvZiB0d2VldHMgZWFjaCBkYXkKYGBgCgpgYGB7cn0KcmVhbERvbmFsZFRydW1wX3R3ZWV0cyAlPiUgCiAgZ3JvdXBfYnkoZGF5ID0gZGF0ZShjcmVhdGVkX2F0KSkgJT4lICAgICMgZXh0cmFjdCB0aGUgZGF0ZSwgZ3JvdXAgYnkgaXQKICBzdW1tYXJpemUodHdlZXRzX3Blcl9kYXkgPSBuKCkpICAgICAgICAgIyBjb3VudCB0aGUgbnVtYmVyIG9mIHR3ZWV0cyBlYWNoIGRheSBzdW1tYXJpemUobWVhbih0d2VldHNfcGVyX2RheSkpICU+JSAKYGBgCgoKYGBge3J9CnJlYWxEb25hbGRUcnVtcF90d2VldHMgJT4lCiAgbXV0YXRlKGRheSA9IGRhdGUoY3JlYXRlZF9hdCkpICU+JSAKICBwbG90X2x5KHggPSB+ZGF5KSAlPiUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgYWRkX2hpc3RvZ3JhbSgpICU+JSAKICBsYXlvdXQodGl0bGUgPSAiTnVtYmVyIG9mIHR3ZWV0cyBmcm9tIEByZWFsRG9uYWxkVHJ1bXAiKQpgYGAKCmBgYHtyfQpyZWFsRG9uYWxkVHJ1bXBfdHdlZXRzICU+JSAKICBtdXRhdGUodGltZSA9IGhvdXIoY3JlYXRlZF9hdCkpICU+JSAKICBjb3VudCh0aW1lKSAlPiUgCiAgZGF0YXRhYmxlKG9wdGlvbnMgPSAobGlzdChwYWdlTGVuZ3RoID0gMjQpKSwgcm93bmFtZXMgPSBGKQpgYGAKCmBgYHtyfQpyZWFsRG9uYWxkVHJ1bXBfdHdlZXRzICU+JSAKICBtdXRhdGUodGltZSA9IHdpdGhfdHooY3JlYXRlZF9hdCwgIkFtZXJpY2EvTmV3X1lvcmsiKSkgJT4lICAgICMgY29udmVydCB0byBFYXN0ZXJuIHRpbWUgem9uZQogIG11dGF0ZSh0aW1lID0gaG91cih0aW1lKSkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBob3VyCiAgcGxvdF9seSh4ID0gfnRpbWUpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBwbG90bHkgZ3JhcGgKICBhZGRfaGlzdG9ncmFtKCkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1ha2UgCiAgbGF5b3V0KHRpdGxlID0gIldoZW4gRG9lcyBAcmVhbERvbmFsZFRydW1wIFR3ZWV0PyIsIAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiVGltZSBvZiBEYXkgKDAgPSBtaWRuaWdodCkiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk51bWJlciBvZiBUd2VldHMiKSkKCmBgYAoKCmBgYHtyfQpyZWFsRG9uYWxkVHJ1bXBfdHdlZXRzICU+JSAKICBtdXRhdGUoZGF5ID0gd2RheShjcmVhdGVkX2F0LCBsYWJlbCA9IFQpKSAlPiUgCiAgbXV0YXRlKGhvdXIgPSBob3VyKHdpdGhfdHooY3JlYXRlZF9hdCwgIkFtZXJpY2EvTmV3X1lvcmsiKSkpICU+JSAKICBwbG90X2x5KHggPSB+ZGF5LCB5ID0gfmhvdXIpICU+JSAKICBhZGRfaGlzdG9ncmFtMmQobmJpbnN4ID0gNywgbmJpbnN5ID0gMjQpICU+JSAKICBsYXlvdXQodGl0bGUgPSAiV2hlbiBEb2VzIEByZWFsRG9uYWxkVHJ1bXAgVHdlZXQ/IiwgCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJEYXkgb2YgdGhlIFdlZWsiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlRpbWUgb2YgRGF5ICgwID0gbWlkbmlnaHQiKSkKYGBgCgoKCgoKCgo=