This report is an exploration of artist Tyler, the Creator’s throughout his careeer.
Warning: Explicit Content
Tyler, the Creator released his first album, B*stard, in 2009. Shortly after that release, Tyler started to get criticized for his controversial lyrics. As his career continued to develope, so did Tyler’s lyrics. Over the past 10+ years, Tyler has changed his rap from horrorcore style to melody-focused and jazz-fused sounds. The goal of this report to analyze the changes, if any, in Tyler, the Creator’s word sentiment and song quality.
The first step was to download the proper packages
library(tidyverse)
library(tidytext)
library(genius)
library(devtools)
library(wordcloud2)
library(tidyverse)
library(ggjoy)
library(spotifyr)
library(ggthemes)
library(readr)
Next, I imported Tyler, the Creator’s most popular albums from Genius
tyler_bastard <- genius_album(artist = "Tyler the Creator", album = "Bastard")
tyler_goblin <- genius_album(artist = "Tyler the Creator", album = "Goblin")
tyler_wolf <- genius_album(artist = "Tyler the Creator", album = "Wolf")
tyler_cherry <- genius_album(artist = "Tyler the Creator", album = "Cherry Bomb")
tyler_flower <- genius_album(artist = "Tyler the Creator", album = "Flower Boy")
tyler_igor <- genius_album(artist = "Tyler the Creator", album = "IGOR")
tyler_call <- genius_album(artist = "Tyler the Creator", album = 'CALL ME IF YOU GET LOST')
Starting from oldest to newest, I analyzed the ten most used words, the sentiment of the words and a word cloud within Tyler, the Creator’s albums.
Bastard - 2009
tyler_bastard %>%
unnest_tokens(word, lyric) -> tyler_words_bastard
tyler_words_bastard %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| shit |
9 |
negative |
-4 |
| bitch |
4 |
negative |
-5 |
| fuck |
3 |
negative |
-4 |
| love |
3 |
positive |
3 |
| mad |
2 |
negative |
-3 |
| miss |
2 |
negative |
-2 |
| nice |
2 |
positive |
3 |
| rich |
2 |
positive |
2 |
| cry |
1 |
negative |
-1 |
| damn |
1 |
negative |
-4 |
tyler_words_bastard %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_bastard%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| slow |
15 |
| french |
12 |
| NA |
12 |
| gon |
9 |
| shit |
9 |
| check |
7 |
| bass |
5 |
| niggas |
5 |
| bitch |
4 |
| nigga |
4 |
Goblin - 2011
tyler_goblin %>%
unnest_tokens(word, lyric) -> tyler_words_goblin
tyler_words_goblin %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| fuck |
38 |
negative |
-4 |
| fucking |
27 |
negative |
-4 |
| shit |
17 |
negative |
-4 |
| bitch |
16 |
negative |
-5 |
| hard |
9 |
negative |
-1 |
| dick |
7 |
negative |
-4 |
| damn |
6 |
negative |
-4 |
| kill |
6 |
negative |
-3 |
| love |
5 |
positive |
3 |
| odd |
4 |
negative |
-2 |
tyler_words_goblin %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_goblin%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| fuck |
38 |
| fucking |
27 |
| wolf |
24 |
| gang |
18 |
| shit |
17 |
| bitch |
16 |
| fuckin |
16 |
| nigga |
14 |
| em |
11 |
| hard |
9 |
Wolf - 2013
tyler_wolf %>%
unnest_tokens(word, lyric) -> tyler_words_wolf
tyler_words_wolf %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| fuck |
26 |
negative |
-4 |
| bitch |
12 |
negative |
-5 |
| fucking |
12 |
negative |
-4 |
| shit |
9 |
negative |
-4 |
| love |
4 |
positive |
3 |
| bad |
3 |
negative |
-3 |
| damn |
3 |
negative |
-4 |
| stuck |
3 |
negative |
-2 |
| cool |
2 |
positive |
1 |
| dick |
2 |
negative |
-4 |
tyler_words_wolf %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_wolf%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| fuck |
26 |
| nigga |
18 |
| bitch |
12 |
| fucking |
12 |
| tamale |
12 |
| NA |
11 |
| niggas |
10 |
| golf |
9 |
| hope |
9 |
| shit |
9 |
Cherry Bomb - 2015
tyler_cherry %>%
unnest_tokens(word, lyric) -> tyler_words_cherry
tyler_words_cherry %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| fucking |
11 |
negative |
-4 |
| fuck |
7 |
negative |
-4 |
| favorite |
5 |
positive |
2 |
| bitch |
4 |
negative |
-5 |
| joy |
4 |
positive |
3 |
| shit |
4 |
negative |
-4 |
| bomb |
2 |
negative |
-1 |
| dead |
2 |
negative |
-3 |
| free |
2 |
positive |
1 |
| hate |
2 |
negative |
-3 |
tyler_words_cherry %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_cherry%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| fucking |
11 |
| NA |
11 |
| niggas |
10 |
| fuck |
7 |
| wings |
7 |
| yellow |
6 |
| favorite |
5 |
| fly |
5 |
| y’all |
5 |
| bitch |
4 |
Flower Boy - 2017
tyler_flower %>%
unnest_tokens(word, lyric) -> tyler_words_flower
tyler_words_flower %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| fuck |
6 |
negative |
-4 |
| sick |
5 |
negative |
-2 |
| fun |
3 |
positive |
4 |
| bitch |
2 |
negative |
-5 |
| mad |
2 |
negative |
-3 |
| shit |
2 |
negative |
-4 |
| stuck |
2 |
negative |
-2 |
| awesome |
1 |
positive |
4 |
| awkward |
1 |
negative |
-2 |
| bad |
1 |
negative |
-3 |
tyler_words_flower %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_flower%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| call |
20 |
| time |
17 |
| boredom |
12 |
| nigga |
11 |
| uh |
10 |
| na |
9 |
| NA |
8 |
| yeah |
7 |
| boy |
6 |
| fuck |
6 |
Igor - 2019
tyler_igor %>%
unnest_tokens(word, lyric) -> tyler_words_igor
tyler_words_igor %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| love |
7 |
positive |
3 |
| fuck |
5 |
negative |
-4 |
| shit |
3 |
negative |
-4 |
| bitch |
2 |
negative |
-5 |
| fallen |
2 |
negative |
-2 |
| fine |
2 |
positive |
2 |
| heaven |
2 |
positive |
2 |
| anxiety |
1 |
negative |
-2 |
| distraction |
1 |
negative |
-2 |
| dread |
1 |
negative |
-2 |
tyler_words_igor %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_igor%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| magic |
24 |
| skate |
19 |
| runnin |
18 |
| leave |
14 |
| time |
13 |
| love |
7 |
| NA |
7 |
| love’s |
6 |
| yeah |
6 |
| eyes |
5 |
CALL ME IF YOU GET LOST - 2021
tyler_call %>%
unnest_tokens(word, lyric) -> tyler_words_call
tyler_words_call %>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
inner_join(get_sentiments("bing")) %>%
inner_join(get_sentiments("afinn")) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
## Joining, by = "word"
## Joining, by = "word"
| shit |
11 |
negative |
-4 |
| lost |
7 |
negative |
-3 |
| woo |
7 |
positive |
3 |
| bitch |
5 |
negative |
-5 |
| fuck |
4 |
negative |
-4 |
| beautiful |
3 |
positive |
3 |
| healthy |
2 |
positive |
2 |
| love |
2 |
positive |
3 |
| sweet |
2 |
positive |
2 |
| amazing |
1 |
positive |
4 |
tyler_words_call %>%
anti_join(stop_words) %>%
count(word) %>%
arrange(desc(n)) %>%
wordcloud2()
## Joining, by = "word"
tyler_words_call%>%
select(word) %>%
anti_join(stop_words) %>%
count(word, sort = TRUE) %>%
head(10) %>%
knitr::kable()
## Joining, by = "word"
| yeah |
15 |
| shit |
11 |
| NA |
11 |
| call |
9 |
| lost |
7 |
| niggas |
7 |
| uh |
7 |
| woo |
7 |
| baby |
6 |
| nigga |
6 |
After exploring changes in Tyler, the Creator’s most common words, I want to see if there were any differences in the valence of his albums.
Since Genius did not have this information, I used my Spotify API access keys to download Tyler, the Creator data that would include the valence information.
tylerspot <- get_artist_audio_features('tyler the creator')
tylerspot$album_name
## [1] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [3] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [5] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [7] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [9] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [11] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [13] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [15] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [17] "IGOR" "IGOR"
## [19] "IGOR" "IGOR"
## [21] "IGOR" "IGOR"
## [23] "IGOR" "IGOR"
## [25] "IGOR" "IGOR"
## [27] "IGOR" "IGOR"
## [29] "Flower Boy" "Flower Boy"
## [31] "Flower Boy" "Flower Boy"
## [33] "Flower Boy" "Flower Boy"
## [35] "Flower Boy" "Flower Boy"
## [37] "Flower Boy" "Flower Boy"
## [39] "Flower Boy" "Flower Boy"
## [41] "Flower Boy" "Flower Boy"
## [43] "Cherry Bomb" "Cherry Bomb"
## [45] "Cherry Bomb" "Cherry Bomb"
## [47] "Cherry Bomb" "Cherry Bomb"
## [49] "Cherry Bomb" "Cherry Bomb"
## [51] "Cherry Bomb" "Cherry Bomb"
## [53] "Cherry Bomb" "Cherry Bomb"
## [55] "Cherry Bomb" "Cherry Bomb + Instrumentals"
## [57] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [59] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [61] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [63] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [65] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [67] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [69] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [71] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [73] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [75] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [77] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [79] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [81] "Cherry Bomb + Instrumentals" "Live At Splash!"
## [83] "Live At Splash!" "Live At Splash!"
## [85] "Live At Splash!" "Live At Splash!"
## [87] "Live At Splash!" "Live At Splash!"
## [89] "Live At Splash!" "Live At Splash!"
## [91] "Live At Splash!" "Live At Splash!"
## [93] "Live At Splash!" "Live At Splash!"
## [95] "Live At Splash!" "Live At Splash!"
## [97] "Live At Splash!" "Live At Splash!"
## [99] "Live At Splash!" "Live At Splash!"
## [101] "Live At Splash!" "Live At Splash!"
## [103] "Live At Splash!" "Live At Splash!"
## [105] "Live At Splash!" "Live At Splash!"
## [107] "Live At Splash!" "Live At Splash!"
## [109] "Live At Splash!" "Live At Splash!"
## [111] "Live At Splash!" "Live At Splash!"
## [113] "Wolf" "Wolf"
## [115] "Wolf" "Wolf"
## [117] "Wolf" "Wolf"
## [119] "Wolf" "Wolf"
## [121] "Wolf" "Wolf"
## [123] "Wolf" "Wolf"
## [125] "Wolf" "Wolf"
## [127] "Wolf" "Wolf"
## [129] "Wolf" "Wolf"
## [131] "Goblin" "Goblin"
## [133] "Goblin" "Goblin"
## [135] "Goblin" "Goblin"
## [137] "Goblin" "Goblin"
## [139] "Goblin" "Goblin"
## [141] "Goblin" "Goblin"
## [143] "Goblin" "Goblin"
## [145] "Goblin" "Goblin"
## [147] "Goblin" "Goblin"
## [149] "Goblin" "Goblin"
## [151] "Goblin" "Goblin"
## [153] "Goblin" "Goblin"
## [155] "Goblin" "Goblin"
## [157] "Goblin" "Goblin"
## [159] "Goblin" "Goblin"
## [161] "Goblin" "Goblin"
## [163] "Goblin" "Goblin"
## [165] "Goblin" "Goblin"
## [167] "Goblin" "Goblin"
## [169] "Goblin" "Goblin"
## [171] "Goblin" "Goblin"
## [173] "Goblin" "Goblin"
## [175] "Goblin" "Goblin"
## [177] "Goblin" "Goblin"
## [179] "Goblin" "Goblin"
## [181] "Goblin" "Goblin"
## [183] "Goblin" "Goblin"
## [185] "Goblin" "Goblin"
## [187] "Goblin" "Goblin"
## [189] "Goblin" "Goblin"
## [191] "Goblin" "Goblin"
## [193] "Goblin" "Goblin"
## [195] "Goblin" "Goblin"
tylerspot$album_name
## [1] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [3] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [5] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [7] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [9] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [11] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [13] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [15] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [17] "IGOR" "IGOR"
## [19] "IGOR" "IGOR"
## [21] "IGOR" "IGOR"
## [23] "IGOR" "IGOR"
## [25] "IGOR" "IGOR"
## [27] "IGOR" "IGOR"
## [29] "Flower Boy" "Flower Boy"
## [31] "Flower Boy" "Flower Boy"
## [33] "Flower Boy" "Flower Boy"
## [35] "Flower Boy" "Flower Boy"
## [37] "Flower Boy" "Flower Boy"
## [39] "Flower Boy" "Flower Boy"
## [41] "Flower Boy" "Flower Boy"
## [43] "Cherry Bomb" "Cherry Bomb"
## [45] "Cherry Bomb" "Cherry Bomb"
## [47] "Cherry Bomb" "Cherry Bomb"
## [49] "Cherry Bomb" "Cherry Bomb"
## [51] "Cherry Bomb" "Cherry Bomb"
## [53] "Cherry Bomb" "Cherry Bomb"
## [55] "Cherry Bomb" "Cherry Bomb + Instrumentals"
## [57] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [59] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [61] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [63] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [65] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [67] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [69] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [71] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [73] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [75] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [77] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [79] "Cherry Bomb + Instrumentals" "Cherry Bomb + Instrumentals"
## [81] "Cherry Bomb + Instrumentals" "Live At Splash!"
## [83] "Live At Splash!" "Live At Splash!"
## [85] "Live At Splash!" "Live At Splash!"
## [87] "Live At Splash!" "Live At Splash!"
## [89] "Live At Splash!" "Live At Splash!"
## [91] "Live At Splash!" "Live At Splash!"
## [93] "Live At Splash!" "Live At Splash!"
## [95] "Live At Splash!" "Live At Splash!"
## [97] "Live At Splash!" "Live At Splash!"
## [99] "Live At Splash!" "Live At Splash!"
## [101] "Live At Splash!" "Live At Splash!"
## [103] "Live At Splash!" "Live At Splash!"
## [105] "Live At Splash!" "Live At Splash!"
## [107] "Live At Splash!" "Live At Splash!"
## [109] "Live At Splash!" "Live At Splash!"
## [111] "Live At Splash!" "Live At Splash!"
## [113] "Wolf" "Wolf"
## [115] "Wolf" "Wolf"
## [117] "Wolf" "Wolf"
## [119] "Wolf" "Wolf"
## [121] "Wolf" "Wolf"
## [123] "Wolf" "Wolf"
## [125] "Wolf" "Wolf"
## [127] "Wolf" "Wolf"
## [129] "Wolf" "Wolf"
## [131] "Goblin" "Goblin"
## [133] "Goblin" "Goblin"
## [135] "Goblin" "Goblin"
## [137] "Goblin" "Goblin"
## [139] "Goblin" "Goblin"
## [141] "Goblin" "Goblin"
## [143] "Goblin" "Goblin"
## [145] "Goblin" "Goblin"
## [147] "Goblin" "Goblin"
## [149] "Goblin" "Goblin"
## [151] "Goblin" "Goblin"
## [153] "Goblin" "Goblin"
## [155] "Goblin" "Goblin"
## [157] "Goblin" "Goblin"
## [159] "Goblin" "Goblin"
## [161] "Goblin" "Goblin"
## [163] "Goblin" "Goblin"
## [165] "Goblin" "Goblin"
## [167] "Goblin" "Goblin"
## [169] "Goblin" "Goblin"
## [171] "Goblin" "Goblin"
## [173] "Goblin" "Goblin"
## [175] "Goblin" "Goblin"
## [177] "Goblin" "Goblin"
## [179] "Goblin" "Goblin"
## [181] "Goblin" "Goblin"
## [183] "Goblin" "Goblin"
## [185] "Goblin" "Goblin"
## [187] "Goblin" "Goblin"
## [189] "Goblin" "Goblin"
## [191] "Goblin" "Goblin"
## [193] "Goblin" "Goblin"
## [195] "Goblin" "Goblin"
tylerspot %>%
group_by(album_name) %>%
filter(!album_name %in% c("Live At Splash!", "Cherry Bomb + Instrumentals")) -> tyler_filtered
tyler_filtered$album_name
## [1] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [3] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [5] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [7] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [9] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [11] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [13] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [15] "CALL ME IF YOU GET LOST" "CALL ME IF YOU GET LOST"
## [17] "IGOR" "IGOR"
## [19] "IGOR" "IGOR"
## [21] "IGOR" "IGOR"
## [23] "IGOR" "IGOR"
## [25] "IGOR" "IGOR"
## [27] "IGOR" "IGOR"
## [29] "Flower Boy" "Flower Boy"
## [31] "Flower Boy" "Flower Boy"
## [33] "Flower Boy" "Flower Boy"
## [35] "Flower Boy" "Flower Boy"
## [37] "Flower Boy" "Flower Boy"
## [39] "Flower Boy" "Flower Boy"
## [41] "Flower Boy" "Flower Boy"
## [43] "Cherry Bomb" "Cherry Bomb"
## [45] "Cherry Bomb" "Cherry Bomb"
## [47] "Cherry Bomb" "Cherry Bomb"
## [49] "Cherry Bomb" "Cherry Bomb"
## [51] "Cherry Bomb" "Cherry Bomb"
## [53] "Cherry Bomb" "Cherry Bomb"
## [55] "Cherry Bomb" "Wolf"
## [57] "Wolf" "Wolf"
## [59] "Wolf" "Wolf"
## [61] "Wolf" "Wolf"
## [63] "Wolf" "Wolf"
## [65] "Wolf" "Wolf"
## [67] "Wolf" "Wolf"
## [69] "Wolf" "Wolf"
## [71] "Wolf" "Wolf"
## [73] "Wolf" "Goblin"
## [75] "Goblin" "Goblin"
## [77] "Goblin" "Goblin"
## [79] "Goblin" "Goblin"
## [81] "Goblin" "Goblin"
## [83] "Goblin" "Goblin"
## [85] "Goblin" "Goblin"
## [87] "Goblin" "Goblin"
## [89] "Goblin" "Goblin"
## [91] "Goblin" "Goblin"
## [93] "Goblin" "Goblin"
## [95] "Goblin" "Goblin"
## [97] "Goblin" "Goblin"
## [99] "Goblin" "Goblin"
## [101] "Goblin" "Goblin"
## [103] "Goblin" "Goblin"
## [105] "Goblin" "Goblin"
## [107] "Goblin" "Goblin"
## [109] "Goblin" "Goblin"
## [111] "Goblin" "Goblin"
## [113] "Goblin" "Goblin"
## [115] "Goblin" "Goblin"
## [117] "Goblin" "Goblin"
## [119] "Goblin" "Goblin"
## [121] "Goblin" "Goblin"
## [123] "Goblin" "Goblin"
## [125] "Goblin" "Goblin"
## [127] "Goblin" "Goblin"
## [129] "Goblin" "Goblin"
## [131] "Goblin" "Goblin"
## [133] "Goblin" "Goblin"
## [135] "Goblin" "Goblin"
## [137] "Goblin" "Goblin"
## [139] "Goblin"
tyler_filtered %>%
ggplot(aes(valence, album_name, fill = ..x..)) +
geom_density_ridges_gradient()
## Picking joint bandwidth of 0.0877

After, looking at the valence between his albums, I wanted to see if energy, the dance ability, and tempo changed as well throughout his albums. Instead of doing song by song in each album, I imported the data into an Excel sheet and calculated the averages for each album. From there, I imported the averages into R Studio and used a heat map to analyze these qualities between albums. The heat maps code used were created by http://student.elon.edu/bwilliamson5/FinalProject/index.html
Tyler_averages <- read_csv("~/Documents/Tyler averages.csv")
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## album = col_character(),
## energy = col_double(),
## danceiability = col_double(),
## tempo = col_double()
## )
Tyler_averages %>%
filter(album %in% c("Wolf", "Igor", "Goblin", "Flower Boy", "Cherry Bomb", "CALL ME IF YOU GET LOST")) -> tyler_avg_filtered
ggplot(data = tyler_avg_filtered, aes (x = energy, y = album))+
geom_tile(aes(fill= energy, height=1 , width=.1),colour="red") +
scale_y_discrete(breaks = Tyler_averages$album) +
scale_fill_gradient2(low = "#33F0FF", midpoint=0.6,
space="Lab", mid="#339FFF", high = "#333CFF") +
labs(x = "Energy") +
labs(y = "Album Name") +
labs(title = "Average Energy in Tyler, the Creator's Albums")

ggplot(data = tyler_avg_filtered, aes (x = danceiability, y = album))+
geom_tile(aes(fill= danceiability, height=1 , width=.1),colour="red") +
scale_y_discrete(breaks = tyler_avg_filtered$album) +
scale_fill_gradient2(low = "#33F0FF", midpoint=0.6,
space="Lab", mid="#339FFF", high = "#333CFF") +
labs(x = "Dance ability") +
labs(y = "Album Name") +
labs(title = "Average Dance Ability in Tyler, the Creator's Albums")

ggplot(data = tyler_avg_filtered, aes (x = tempo, y = album))+
geom_tile(aes(fill= tempo, height=1 , width=.1),colour="red") +
scale_y_discrete(breaks = tyler_avg_filtered$album) +
scale_fill_gradient2(low = "#33F0FF", midpoint=0.6,
space="Lab", mid="#339FFF", high = "#333CFF") +
labs(x = "Tempo") +
labs(y = "Album Name") +
labs(title = "Average Tempo in Tyler, the Creator's Albums")

Conclusion
The lyrics over Tyler, the Creator’s career have drastically changed. In his early albums, Tyler’s word clouds were filled with curse words. As more albums came out, the number of curse words started to decrease and more positive sentiment words started to replace the curse words. One reason for this is Tyler started his career filling his songs with homophobic and hateful lyrics. Then with the release of Flower Boy, Tyler admitted to being bisexual which changed his lyrics completely. With his identity changing, it changed his music for the positive as well.
The energy, dance ability and tempo has no correlation to his albums. Each album varied in their results and did not show a change throughout his career. This was expected due to the nature of each album and song being completely different from one another.