Through this project, I have tried to analyze song rankings for billboard top 100 in the year 2000.
Points that I have tried to answer through this project:
1. Top 5 Songs in 2000
2. Top 5 #1 Songs
3. Top 5 Artists in 2000
Song rankings for billboard top 100 in the year 2000
billboard
A dataset with variables:
library(tidyr)
## Warning: package 'tidyr' was built under R version 3.6.3
library(ggplot2)
head(billboard)
## # A tibble: 6 x 79
## artist track date.entered wk1 wk2 wk3 wk4 wk5 wk6 wk7 wk8
## <chr> <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2 Pac Baby~ 2000-02-26 87 82 72 77 87 94 99 NA
## 2 2Ge+h~ The ~ 2000-09-02 91 87 92 NA NA NA NA NA
## 3 3 Doo~ Kryp~ 2000-04-08 81 70 68 67 66 57 54 53
## 4 3 Doo~ Loser 2000-10-21 76 76 72 69 67 65 55 59
## 5 504 B~ Wobb~ 2000-04-15 57 34 25 17 17 31 36 49
## 6 98^0 Give~ 2000-08-19 51 39 34 26 26 19 2 2
## # ... with 68 more variables: wk9 <dbl>, wk10 <dbl>, wk11 <dbl>, wk12 <dbl>,
## # wk13 <dbl>, wk14 <dbl>, wk15 <dbl>, wk16 <dbl>, wk17 <dbl>, wk18 <dbl>,
## # wk19 <dbl>, wk20 <dbl>, wk21 <dbl>, wk22 <dbl>, wk23 <dbl>, wk24 <dbl>,
## # wk25 <dbl>, wk26 <dbl>, wk27 <dbl>, wk28 <dbl>, wk29 <dbl>, wk30 <dbl>,
## # wk31 <dbl>, wk32 <dbl>, wk33 <dbl>, wk34 <dbl>, wk35 <dbl>, wk36 <dbl>,
## # wk37 <dbl>, wk38 <dbl>, wk39 <dbl>, wk40 <dbl>, wk41 <dbl>, wk42 <dbl>,
## # wk43 <dbl>, wk44 <dbl>, wk45 <dbl>, wk46 <dbl>, wk47 <dbl>, wk48 <dbl>,
## # wk49 <dbl>, wk50 <dbl>, wk51 <dbl>, wk52 <dbl>, wk53 <dbl>, wk54 <dbl>,
## # wk55 <dbl>, wk56 <dbl>, wk57 <dbl>, wk58 <dbl>, wk59 <dbl>, wk60 <dbl>,
## # wk61 <dbl>, wk62 <dbl>, wk63 <dbl>, wk64 <dbl>, wk65 <dbl>, wk66 <lgl>,
## # wk67 <lgl>, wk68 <lgl>, wk69 <lgl>, wk70 <lgl>, wk71 <lgl>, wk72 <lgl>,
## # wk73 <lgl>, wk74 <lgl>, wk75 <lgl>, wk76 <lgl>
nrow(billboard)
## [1] 317
ncol(billboard)
## [1] 79
dat<-billboard[,-3]
View(dat)
i<-integer()
j<-integer()
week<-numeric()
week1<-numeric()
data<-data.frame()
for(i in 1:317)
{
week[i]<-0
for(j in 3:78)
{
if(billboard[i,j]>0 && is.na(billboard[i,j])==F)
{
week[i]=week[i]+1
}
}
}
week-1
## [1] 7 3 53 20 18 20 5 20 32 20 11 21 22 24 20 5 29 3 20 32 20 20 31 20 24
## [26] 15 20 20 21 15 9 3 15 17 20 29 15 9 23 12 20 37 20 3 3 20 19 6 8 11
## [51] 10 7 20 15 7 11 20 17 12 6 19 20 57 47 13 5 17 21 20 11 18 20 20 3 28
## [76] 32 32 14 6 28 10 20 15 20 20 20 13 28 14 2 20 21 15 19 10 4 1 20 5 16
## [101] 21 17 12 20 21 1 7 1 20 19 15 12 20 27 20 11 7 12 20 20 8 53 14 14 4
## [126] 13 19 11 28 9 20 12 18 20 17 17 20 20 17 15 20 24 24 8 20 9 15 21 19 44
## [151] 17 15 20 32 6 24 15 20 12 5 20 9 10 5 4 2 3 20 5 8 20 11 9 10 7
## [176] 13 11 18 17 55 20 20 17 14 7 19 22 12 18 20 9 24 5 18 18 20 1 20 13 20
## [201] 20 21 20 14 8 13 20 20 10 6 20 9 23 22 20 30 17 20 23 25 26 16 34 21 27
## [226] 5 13 9 9 4 20 20 6 27 32 8 4 20 20 5 5 14 20 20 19 22 20 20 25 20
## [251] 26 20 26 20 33 2 20 9 5 15 16 6 20 26 28 20 26 4 26 24 24 20 11 20 3
## [276] 12 26 13 17 20 20 20 7 6 5 12 22 20 20 11 20 27 11 4 22 2 16 7 19 20
## [301] 41 21 12 9 11 20 6 20 19 18 15 10 8 6 14 2 39
which.max(week-1)
## [1] 63
data<-data.frame(Artist=dat$artist,Song=dat$track,No_of_Weeks=week-1)
View(data)
print("Artist & Song with most weeks in Top 100: ")
## [1] "Artist & Song with most weeks in Top 100: "
data[which.max(data$No_of_Weeks),]
## Artist Song No_of_Weeks
## 63 Creed Higher 57
for(i in 1:317)
{
week1[i]<-0
for(j in 3:78)
{
if(billboard[i,j]==1 && is.na(billboard[i,j])==F)
{
week1[i]=week1[i]+1
}
}
}
week1
## [1] 0 0 0 0 0 0 0 0 1 0 0 4 0 2 0 0 0 0 0 0 0 0 0 0 0
## [26] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [51] 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 11
## [76] 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [101] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [126] 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
## [151] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [176] 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0
## [201] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0
## [226] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [251] 0 0 10 0 4 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0
## [276] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [301] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
data<-data.frame(Artist=dat$artist,Song=dat$track,No_of_Weeks=week-1,No_1_Week=week1)
View(data)
print("Artist & Song with most weeks occupying #1: ")
## [1] "Artist & Song with most weeks occupying #1: "
data[which.max(data$No_1_Week),]
## Artist Song No_of_Weeks No_1_Week
## 75 Destiny's Child Independent Women Pa... 28 11
dat_art<-aggregate(x=data$No_of_Weeks,by=list(data$Artist),FUN=sum)
print("Artist with most weeks in Top 100: ")
## [1] "Artist with most weeks in Top 100: "
dat_art[which.max(dat_art$x),]
## Group.1 x
## 49 Creed 104
dat1<-head(data[order(data$No_of_Weeks,decreasing=T),],n=5)
dat1
## Artist Song No_of_Weeks No_1_Week
## 63 Creed Higher 57 0
## 180 Lonestar Amazed 55 2
## 3 3 Doors Down Kryptonite 53 0
## 122 Hill, Faith Breathe 53 0
## 64 Creed With Arms Wide Open 47 1
dat2<-head(data[order(data$No_1_Week,decreasing=T),],n=5)
dat2
## Artist Song No_of_Weeks No_1_Week
## 75 Destiny's Child Independent Women Pa... 28 11
## 253 Santana Maria, Maria 26 10
## 12 Aguilera, Christina Come On Over Baby (A... 21 4
## 192 Madonna Music 24 4
## 255 Savage Garden I Knew I Loved You 33 4
dat3<-head(dat_art[order(dat_art$x,decreasing=T),],n=5)
colnames(dat3)<-c("Artist","Weeks")
dat3
## Artist Weeks
## 49 Creed 104
## 130 Lonestar 95
## 55 Destiny's Child 92
## 157 N'Sync 74
## 187 Sisqo 74
ggplot(data=dat1,aes(x=Song,y=No_of_Weeks,fill=Artist))+
geom_bar(stat="identity")+
geom_text(aes(label=No_of_Weeks), vjust=-0.2, size=3.5)+
xlab("Top 5 Songs in 2001")+ylab("No. of Weeks in Top100")
ggplot(data=dat2,aes(x=Song,y=No_1_Week,fill=Artist))+
geom_bar(stat="identity")+
geom_text(aes(label=No_1_Week), vjust=-0.2, size=3.5)+
xlab("Top 5 Songs in 2001")+ylab("No. of Weeks at #1")
ggplot(data=dat3,aes(x=Artist,y=Weeks,fill=Artist))+
geom_bar(stat="identity")+
geom_text(aes(label=Weeks), vjust=-0.2, size=3.5)+
xlab("Top 5 Artists in 2001")+ylab("No. of Weeks in Top100")
Clearly from above it is clear that Higher by Creed occupied the most weeks(57) in Top 100, Independent Women Part I by Destiny’s Child spent the most weeks(11) at #1, and Creed dominated the billboard charts by stacking most weeks(104) in Top 100 through their various songs.
The dataset used in this project is available as a part of ‘tidyr’ library.