1. First, find tweets that other people are making about your chosen person using search_tweets(), and make a table of the most popular tweets about them.
TigerWoods <- search_tweets("TigerWoods", n = 1000, include_rts = F)

Downloading [=======>---------------------------------]  20%
Downloading [===========>-----------------------------]  30%
Downloading [===============>-------------------------]  40%
Downloading [===================>---------------------]  50%
Downloading [========================>----------------]  60%
Downloading [============================>------------]  70%
Downloading [================================>--------]  80%
Downloading [====================================>----]  90%
Downloading [=========================================] 100%
TigerWoods %>% 
  select(text, retweet_count) %>%    
  top_n(25) %>%                       # get the top 25 most popular tweets
  arrange(-retweet_count) %>%         # sort in descending order of popularity
  datatable()
Selecting by retweet_count

This table shows the most popular tweets about Tiger Woods right now.

  1. Next get their tweets using get_timeline(). Find which hashtags they use most and make a table.
tiger_tweets <- get_timeline("TigerWoods", n = 5000)
TigerWoods %>% 
  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
`cols` is now required when using unnest().
Please use `cols = c(hashtags)`

This is a table showing what hashtags people are using about Tiger Woods.

  1. Make a table of the number of tweets each day, and find the overall average number of tweets per day.
tiger_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

This shows the tweets per day in a table.

tiger_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))

This is the average tweets per day in a table.

  1. Create a plotly graphic of the number of tweets per day.
tiger_tweets %>%
  mutate(day = date(created_at)) %>% 
  plot_ly(x = ~day) %>%                                        
  add_histogram()%>%
  layout(title = "how often @TigerWoods tweets")

This graph shows the number of times that tiger tweets per day.

  1. Create a table and a plotly histogram of the hour of the day that they tweet.
tz(tiger_tweets$created_at)
[1] "UTC"
kim_tweets %>% 
  mutate(time = with_tz(created_at, "America/Detroit")) %>% 
  mutate(time = hour(time)) %>% 
  count(time) %>% 
  datatable(options = (list(pageLength = 24)), rownames = F)
NA

A table showing the hour of the day that Tiger tweets at.

tiger_tweets %>% 
  mutate(time = with_tz(created_at, "America/Detroit")) %>%    # convert to Detroit time zone
  mutate(time = hour(time)) %>%                                 # extract the hour
  plot_ly(x = ~time) %>%                                        # create plotly graph
  add_histogram() %>%                                              # make histogram
layout(title = "When Does @TigerWoods Tweet?", 
         xaxis = list(title = "Time of Day (0 = midnight)"),
         yaxis = list(title = "Number of Tweets"))
NA

A graph showing the times of day that Tiger Woods tweets.

  1. Create a table and a plotly histogram of the week days that they tweet.
tiger_tweets %>% 
  mutate(Day = wday(created_at,           # find the weekday that the tweet was created
                    label = T)) %>%       # use labels (Sun, Mon, etc) rather than numbers
  count(Day) %>%                          # count the number of tweets each day
  datatable(rownames = F)
NA

This table shows the days of the week that tiger tweets.

tiger_tweets %>% 
  mutate(Day = wday(created_at,           # find the weekday that the tweet was created
                    label = T)) %>%       # use labels (Sun, Mon, etc) rather than numbers
  plot_ly(x = ~Day) %>%                                        # create plotly graph
  add_histogram() %>%                                              # make histogram
layout(title = "When Does @TigerWoods Tweet?", 
         xaxis = list(title = "Days of the week"),
         yaxis = list(title = "Number of Tweets"))
NA

A histogram showing the days of the week that Tiger tweets.

  1. Create a plotly heatmap of the weekday and time of day that they tweet.
tiger_tweets %>% 
  mutate(day = wday(created_at, label = T)) %>% 
  mutate(hour = hour(with_tz(created_at, "America/Detroit"))) %>% 
  plot_ly(x = ~day, y = ~hour) %>% 
  add_histogram2d(nbinsx = 7, nbinsy = 24)%>%
  layout(title = "When Does @TigerWoods Tweet?", 
         xaxis = list(title = "Days of the week"),
         yaxis = list(title = "Hour of the day (0=midnight)"))
NA

A heatmap showing the days of the week that Tiger tweets.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCjEuIEZpcnN0LCBmaW5kIHR3ZWV0cyB0aGF0IG90aGVyIHBlb3BsZSBhcmUgbWFraW5nIGFib3V0IHlvdXIgY2hvc2VuIHBlcnNvbiB1c2luZyBzZWFyY2hfdHdlZXRzKCksIGFuZCBtYWtlIGEgdGFibGUgb2YgdGhlIG1vc3QgcG9wdWxhciB0d2VldHMgYWJvdXQgdGhlbS4KCgpgYGB7cn0KVGlnZXJXb29kcyA8LSBzZWFyY2hfdHdlZXRzKCJUaWdlcldvb2RzIiwgbiA9IDEwMDAsIGluY2x1ZGVfcnRzID0gRikKYGBgCgoKCmBgYHtyfQpUaWdlcldvb2RzICU+JSAKICBzZWxlY3QodGV4dCwgcmV0d2VldF9jb3VudCkgJT4lICAgIAogIHRvcF9uKDI1KSAlPiUgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSB0b3AgMjUgbW9zdCBwb3B1bGFyIHR3ZWV0cwogIGFycmFuZ2UoLXJldHdlZXRfY291bnQpICU+JSAgICAgICAgICMgc29ydCBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIHBvcHVsYXJpdHkKICBkYXRhdGFibGUoKQpgYGAKClRoaXMgdGFibGUgc2hvd3MgdGhlIG1vc3QgcG9wdWxhciB0d2VldHMgYWJvdXQgVGlnZXIgV29vZHMgcmlnaHQgbm93LiAKCgoKCjIuIE5leHQgZ2V0IHRoZWlyIHR3ZWV0cyB1c2luZyBnZXRfdGltZWxpbmUoKS4gRmluZCB3aGljaCBoYXNodGFncyB0aGV5IHVzZSBtb3N0IGFuZCBtYWtlIGEgdGFibGUuIAoKCmBgYHtyfQp0aWdlcl90d2VldHMgPC0gZ2V0X3RpbWVsaW5lKCJUaWdlcldvb2RzIiwgbiA9IDUwMDApCmBgYAoKYGBge3J9ClRpZ2VyV29vZHMgJT4lIAogIHNlbGVjdChoYXNodGFncykgJT4lICAgICAgICAgICAgICAgICAgICMgRm9jdXMgb24gdGhlIGhhc2h0YWdzCiAgdW5uZXN0KCkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXBhcmF0ZSBtdWx0aXBsZSBoYXNodGFncwogIG11dGF0ZShoYXNodGFncyA9IHRvbG93ZXIoaGFzaHRhZ3MpKSAlPiUgICAgICAjIG1ha2UgYWxsIGhhc2h0YWdzIGxvd2VyY2FzZQogIGNvdW50KGhhc2h0YWdzLCBzb3J0PVRSVUUpICU+JSAgICAgICAgICAgICAgICAjIGNvdW50IGhvdyBvZnRlbiB0aGV5IGFwcGVhcgogIGRhdGF0YWJsZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhbiBpbnRlcmFjdGl2ZSB0YWJsZQoKCmBgYAoKVGhpcyBpcyBhIHRhYmxlIHNob3dpbmcgd2hhdCBoYXNodGFncyBwZW9wbGUgYXJlIHVzaW5nIGFib3V0IFRpZ2VyIFdvb2RzLiAKCgoKCjMuIE1ha2UgYSB0YWJsZSBvZiB0aGUgbnVtYmVyIG9mIHR3ZWV0cyBlYWNoIGRheSwgYW5kIGZpbmQgdGhlIG92ZXJhbGwgYXZlcmFnZSBudW1iZXIgb2YgdHdlZXRzIHBlciBkYXkuCgpgYGB7cn0KdGlnZXJfdHdlZXRzICU+JSAKICBncm91cF9ieShkYXkgPSBkYXRlKGNyZWF0ZWRfYXQpKSAlPiUgICAgIyBleHRyYWN0IHRoZSBkYXRlLCBncm91cCBieSBpdAogIHN1bW1hcml6ZSh0d2VldHNfcGVyX2RheSA9IG4oKSkgICAgICAgICAjIGNvdW50IHRoZSBudW1iZXIgb2YgdHdlZXRzIGVhY2ggZGF5CmBgYAoKVGhpcyBzaG93cyB0aGUgdHdlZXRzIHBlciBkYXkgaW4gYSB0YWJsZS4KCmBgYHtyfQp0aWdlcl90d2VldHMgJT4lIAogIGdyb3VwX2J5KGRheSA9IGRhdGUoY3JlYXRlZF9hdCkpICU+JSAgICAjIGV4dHJhY3QgdGhlIGRhdGUsIGdyb3VwIGJ5IGl0CiAgc3VtbWFyaXplKHR3ZWV0c19wZXJfZGF5ID0gbigpKSAlPiUgIyBjb3VudCB0aGUgbnVtYmVyIG9mIHR3ZWV0cyBlYWNoIGRheQogIHN1bW1hcml6ZShtZWFuKHR3ZWV0c19wZXJfZGF5KSkKYGBgCgpUaGlzIGlzIHRoZSBhdmVyYWdlIHR3ZWV0cyBwZXIgZGF5IGluIGEgdGFibGUuCgoKCgo0LiBDcmVhdGUgYSBwbG90bHkgZ3JhcGhpYyBvZiB0aGUgbnVtYmVyIG9mIHR3ZWV0cyBwZXIgZGF5LgoKYGBge3J9CnRpZ2VyX3R3ZWV0cyAlPiUKICBtdXRhdGUoZGF5ID0gZGF0ZShjcmVhdGVkX2F0KSkgJT4lIAogIHBsb3RfbHkoeCA9IH5kYXkpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBhZGRfaGlzdG9ncmFtKCklPiUKICBsYXlvdXQodGl0bGUgPSAiaG93IG9mdGVuIEBUaWdlcldvb2RzIHR3ZWV0cyIpCmBgYAoKVGhpcyBncmFwaCBzaG93cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGlnZXIgdHdlZXRzIHBlciBkYXkuIAoKCgoKNS4gQ3JlYXRlIGEgdGFibGUgYW5kIGEgcGxvdGx5IGhpc3RvZ3JhbSBvZiB0aGUgaG91ciBvZiB0aGUgZGF5IHRoYXQgdGhleSB0d2VldC4KCmBgYHtyfQp0eih0aWdlcl90d2VldHMkY3JlYXRlZF9hdCkKCmBgYAoKYGBge3J9CnRpZ2VyX3R3ZWV0cyAlPiUgCiAgbXV0YXRlKHRpbWUgPSB3aXRoX3R6KGNyZWF0ZWRfYXQsICJBbWVyaWNhL0RldHJvaXQiKSkgJT4lIAogIG11dGF0ZSh0aW1lID0gaG91cih0aW1lKSkgJT4lIAogIGNvdW50KHRpbWUpICU+JSAKICBkYXRhdGFibGUob3B0aW9ucyA9IChsaXN0KHBhZ2VMZW5ndGggPSAyNCkpLCByb3duYW1lcyA9IEYpCgpgYGAKQSB0YWJsZSBzaG93aW5nIHRoZSBob3VyIG9mIHRoZSBkYXkgdGhhdCBUaWdlciB0d2VldHMgYXQuIAoKCmBgYHtyfQp0aWdlcl90d2VldHMgJT4lIAogIG11dGF0ZSh0aW1lID0gd2l0aF90eihjcmVhdGVkX2F0LCAiQW1lcmljYS9EZXRyb2l0IikpICU+JSAgICAjIGNvbnZlcnQgdG8gRGV0cm9pdCB0aW1lIHpvbmUKICBtdXRhdGUodGltZSA9IGhvdXIodGltZSkpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgaG91cgogIHBsb3RfbHkoeCA9IH50aW1lKSAlPiUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgcGxvdGx5IGdyYXBoCiAgYWRkX2hpc3RvZ3JhbSgpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1ha2UgaGlzdG9ncmFtCmxheW91dCh0aXRsZSA9ICJXaGVuIERvZXMgQFRpZ2VyV29vZHMgVHdlZXQ/IiwgCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJUaW1lIG9mIERheSAoMCA9IG1pZG5pZ2h0KSIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTnVtYmVyIG9mIFR3ZWV0cyIpKQoKYGBgCgpBIGdyYXBoIHNob3dpbmcgdGhlIHRpbWVzIG9mIGRheSB0aGF0IFRpZ2VyIFdvb2RzIHR3ZWV0cy4KCgoKCjYuIENyZWF0ZSBhIHRhYmxlIGFuZCBhIHBsb3RseSBoaXN0b2dyYW0gb2YgdGhlIHdlZWsgZGF5cyB0aGF0IHRoZXkgdHdlZXQuCgpgYGB7cn0KdGlnZXJfdHdlZXRzICU+JSAKICBtdXRhdGUoRGF5ID0gd2RheShjcmVhdGVkX2F0LCAgICAgICAgICAgIyBmaW5kIHRoZSB3ZWVrZGF5IHRoYXQgdGhlIHR3ZWV0IHdhcyBjcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBUKSkgJT4lICAgICAgICMgdXNlIGxhYmVscyAoU3VuLCBNb24sIGV0YykgcmF0aGVyIHRoYW4gbnVtYmVycwogIGNvdW50KERheSkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvdW50IHRoZSBudW1iZXIgb2YgdHdlZXRzIGVhY2ggZGF5CiAgZGF0YXRhYmxlKHJvd25hbWVzID0gRikKCmBgYAoKVGhpcyB0YWJsZSBzaG93cyB0aGUgZGF5cyBvZiB0aGUgd2VlayB0aGF0IHRpZ2VyIHR3ZWV0cy4KCmBgYHtyfQp0aWdlcl90d2VldHMgJT4lIAogIG11dGF0ZShEYXkgPSB3ZGF5KGNyZWF0ZWRfYXQsICAgICAgICAgICAjIGZpbmQgdGhlIHdlZWtkYXkgdGhhdCB0aGUgdHdlZXQgd2FzIGNyZWF0ZWQKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFQpKSAlPiUgICAgICAgIyB1c2UgbGFiZWxzIChTdW4sIE1vbiwgZXRjKSByYXRoZXIgdGhhbiBudW1iZXJzCiAgcGxvdF9seSh4ID0gfkRheSkgJT4lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIHBsb3RseSBncmFwaAogIGFkZF9oaXN0b2dyYW0oKSAlPiUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWtlIGhpc3RvZ3JhbQpsYXlvdXQodGl0bGUgPSAiV2hlbiBEb2VzIEBUaWdlcldvb2RzIFR3ZWV0PyIsIAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiRGF5cyBvZiB0aGUgd2VlayIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTnVtYmVyIG9mIFR3ZWV0cyIpKQoKYGBgCgpBIGhpc3RvZ3JhbSBzaG93aW5nIHRoZSBkYXlzIG9mIHRoZSB3ZWVrIHRoYXQgVGlnZXIgdHdlZXRzLiAKCgoKCgo3LiBDcmVhdGUgYSBwbG90bHkgaGVhdG1hcCBvZiB0aGUgd2Vla2RheSBhbmQgdGltZSBvZiBkYXkgdGhhdCB0aGV5IHR3ZWV0LiAKCgpgYGB7cn0KdGlnZXJfdHdlZXRzICU+JSAKICBtdXRhdGUoZGF5ID0gd2RheShjcmVhdGVkX2F0LCBsYWJlbCA9IFQpKSAlPiUgCiAgbXV0YXRlKGhvdXIgPSBob3VyKHdpdGhfdHooY3JlYXRlZF9hdCwgIkFtZXJpY2EvRGV0cm9pdCIpKSkgJT4lIAogIHBsb3RfbHkoeCA9IH5kYXksIHkgPSB+aG91cikgJT4lIAogIGFkZF9oaXN0b2dyYW0yZChuYmluc3ggPSA3LCBuYmluc3kgPSAyNCklPiUKICBsYXlvdXQodGl0bGUgPSAiV2hlbiBEb2VzIEBUaWdlcldvb2RzIFR3ZWV0PyIsIAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiRGF5cyBvZiB0aGUgd2VlayIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiSG91ciBvZiB0aGUgZGF5ICgwPW1pZG5pZ2h0KSIpKQoKYGBgCgpBIGhlYXRtYXAgc2hvd2luZyB0aGUgZGF5cyBvZiB0aGUgd2VlayB0aGF0IFRpZ2VyIHR3ZWV0cy4gCgoKCgoKCgoKCgoKCgoKCgoKCg==