Assignment:
- Get Trump’s tweets (realDonaldTrump) using get_timeline(). (You won’t need to use search_tweets() for this assignment.)
- Find which hashtags he uses most and make a table.
- Make a table of the number of tweets each day, and find the overall average number of tweets per day.
- Create a plotly graphic of the number of tweets per day.
- Create a table and a plotly histogram of the hour of the day that Trump tweets.
- Create a table and a plotly histogram of the week days that Trump tweets.
- Create a plotly heatmap of the weekday and time of day that Trump tweets.
- 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=