Code and Visualisation
library(ggplot2)
library(rvest)
#scrap data
Happiness_Index <- read_html("https://en.wikipedia.org/wiki/World_Happiness_Report")
# select the fifth element of the html_nodes
Happiness_Index_2018<- html_table(html_nodes(Happiness_Index, "table")[[5]])
#catgorising the index
for (i in 1:length(Happiness_Index_2018$Country)) {
Happiness_Index_2018$Happiness_Category <-
with(Happiness_Index_2018,ifelse(Score >= 7,"Extremely Happy",
ifelse(Score >= 6 & Score < 7,"Very Happy",
ifelse(Score >= 5 & Score < 6,"Happy","Not Happy"))))
}
#Factorise
Happiness_Index_2018$Happiness_Category <- factor(Happiness_Index_2018$Happiness_Category,
levels = c("Extremely Happy","Very Happy","Happy","Not Happy"))
#creating a label for plotting
Happiness_Index_2018$label <- ifelse(((Happiness_Index_2018$`GDP per capita` > 2.0
& Happiness_Index_2018$Score > 6.0) |
((Happiness_Index_2018$`GDP per capita`> 1.0 &
Happiness_Index_2018$`GDP per capita`< 1.2)& Happiness_Index_2018$Score > 7.0)|
(Happiness_Index_2018$`GDP per capita`<0.15) &
Happiness_Index_2018$Score > 4.3) |
(Happiness_Index_2018$`GDP per capita`> 1) &
(Happiness_Index_2018$Score > 3.5 & Happiness_Index_2018$Score < 3.8)|
(Happiness_Index_2018$`GDP per capita`> 1.3) &
(Happiness_Index_2018$Score >5.4 &Happiness_Index_2018$Score < 6) ,
paste("\n",Happiness_Index_2018$Country,"\n"),"")
#create an object for plot and assign the dataset variables.
#Colour the points by Happiness Category
p <- ggplot( data = Happiness_Index_2018,
aes(x=Score, y=`GDP per capita`,
colour=Happiness_Category))
p <- p + scale_color_discrete(name="Happiness Category")
#add the linear regression line to the plot
p <- p + stat_smooth(method="lm")
#add a layer for the plot type (points)
p <- p+geom_point()+
theme(legend.background = element_rect(fill="grey", size=0.5, linetype="solid"))
# label the outlier
p <- p+geom_text(aes(label=Happiness_Index_2018$label), position = position_nudge(y=0.05))
#Add title , Label axes
p <- p+labs(title="Happiness Index in Comparison with GDP Per Capita of the Country",
x = "Happiness Index Score",
y = "GDP Per Capita")
# make title and axes bold, change color of axes labels for better readability
p <- p+
theme(
plot.title = element_text(color="black", size=16, face="bold", hjust = 0.5),
axis.title.x = element_text( size=12, face="bold"),
axis.title.y = element_text( size=12, face="bold")
)
#plot
p

Conclusion:
- Counties having high GDP like UAE with a GDP 2.096 doesnt qualify among the happiest nation, whereas Costa Rica with a much lesser GDP of 1.010 appears much happier indicating that wealth is not primarily an indication of happiness.
End
LS0tCnRpdGxlOiAiSXMgR0RQIHBlciBjYXBpdGEgYW4gSW5kaWNhdGlvbiBvZiBjb3VudHJ5J3MgaGFwcGluZXNzID8gIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCiMjI0FobWFkIEhhc25haW4gCi0gUnB1YnMgbGluayBmb3IgdGhlIHJlcG9ydCAKKGh0dHA6Ly9ycHVicy5jb20vVGhlX0FuYWx5c3QvSVYpCgojIyBEYXRhIFNvdXJjZQoKLSBXaWtpcGVkaWEgKlRoZSBXb3JsZCBIYXBwaW5lc3MgUmVwb3J0IDIwMTgqLiBSZXRyaWV2ZWQgZnJvbSAKaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29ybGRfSGFwcGluZXNzX1JlcG9ydAotIE9yaWdpbmFsIHNvdXJjZSBvZiBkYXRhIGh0dHA6Ly93b3JsZGhhcHBpbmVzcy5yZXBvcnQvZWQvMjAxOC8KCiMjIENvZGUgYW5kIFZpc3VhbGlzYXRpb24KCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30KbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHJ2ZXN0KSAKICNzY3JhcCBkYXRhIApIYXBwaW5lc3NfSW5kZXggPC0gcmVhZF9odG1sKCJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JsZF9IYXBwaW5lc3NfUmVwb3J0IikKIyBzZWxlY3QgdGhlIGZpZnRoIGVsZW1lbnQgb2YgdGhlIGh0bWxfbm9kZXMKSGFwcGluZXNzX0luZGV4XzIwMTg8LSBodG1sX3RhYmxlKGh0bWxfbm9kZXMoSGFwcGluZXNzX0luZGV4LCAidGFibGUiKVtbNV1dKQoKI2NhdGdvcmlzaW5nIHRoZSBpbmRleApmb3IgKGkgaW4gMTpsZW5ndGgoSGFwcGluZXNzX0luZGV4XzIwMTgkQ291bnRyeSkpIHsKICBIYXBwaW5lc3NfSW5kZXhfMjAxOCRIYXBwaW5lc3NfQ2F0ZWdvcnkgPC0gCiAgd2l0aChIYXBwaW5lc3NfSW5kZXhfMjAxOCxpZmVsc2UoU2NvcmUgPj0gNywiRXh0cmVtZWx5IEhhcHB5IiwKICBpZmVsc2UoU2NvcmUgPj0gNiAmIFNjb3JlIDwgNywiVmVyeSBIYXBweSIsCiAgaWZlbHNlKFNjb3JlID49IDUgJiBTY29yZSA8IDYsIkhhcHB5IiwiTm90IEhhcHB5IikpKSkKfQojRmFjdG9yaXNlCkhhcHBpbmVzc19JbmRleF8yMDE4JEhhcHBpbmVzc19DYXRlZ29yeSA8LSBmYWN0b3IoSGFwcGluZXNzX0luZGV4XzIwMTgkSGFwcGluZXNzX0NhdGVnb3J5LApsZXZlbHMgPSBjKCJFeHRyZW1lbHkgSGFwcHkiLCJWZXJ5IEhhcHB5IiwiSGFwcHkiLCJOb3QgSGFwcHkiKSkKCiNjcmVhdGluZyBhIGxhYmVsIGZvciBwbG90dGluZwpIYXBwaW5lc3NfSW5kZXhfMjAxOCRsYWJlbCA8LSBpZmVsc2UoKChIYXBwaW5lc3NfSW5kZXhfMjAxOCRgR0RQIHBlciBjYXBpdGFgID4gMi4wCiYgSGFwcGluZXNzX0luZGV4XzIwMTgkU2NvcmUgPiA2LjApIHwKKChIYXBwaW5lc3NfSW5kZXhfMjAxOCRgR0RQIHBlciBjYXBpdGFgPiAxLjAgJiAKSGFwcGluZXNzX0luZGV4XzIwMTgkYEdEUCBwZXIgY2FwaXRhYDwgMS4yKSYgSGFwcGluZXNzX0luZGV4XzIwMTgkU2NvcmUgPiA3LjApfCAKKEhhcHBpbmVzc19JbmRleF8yMDE4JGBHRFAgcGVyIGNhcGl0YWA8MC4xNSkgJgpIYXBwaW5lc3NfSW5kZXhfMjAxOCRTY29yZSA+IDQuMykgfAooSGFwcGluZXNzX0luZGV4XzIwMTgkYEdEUCBwZXIgY2FwaXRhYD4gMSkgJgooSGFwcGluZXNzX0luZGV4XzIwMTgkU2NvcmUgPiAzLjUgJiBIYXBwaW5lc3NfSW5kZXhfMjAxOCRTY29yZSA8IDMuOCl8CihIYXBwaW5lc3NfSW5kZXhfMjAxOCRgR0RQIHBlciBjYXBpdGFgPiAxLjMpICYKKEhhcHBpbmVzc19JbmRleF8yMDE4JFNjb3JlID41LjQgJkhhcHBpbmVzc19JbmRleF8yMDE4JFNjb3JlIDwgNikgLApwYXN0ZSgiXG4iLEhhcHBpbmVzc19JbmRleF8yMDE4JENvdW50cnksIlxuIiksIiIpCgojY3JlYXRlIGFuIG9iamVjdCBmb3IgcGxvdCBhbmQgICBhc3NpZ24gdGhlIGRhdGFzZXQgdmFyaWFibGVzLgojQ29sb3VyIHRoZSBwb2ludHMgYnkgSGFwcGluZXNzIENhdGVnb3J5IApwIDwtIGdncGxvdCggZGF0YSA9IEhhcHBpbmVzc19JbmRleF8yMDE4LAogICAgICAgICAgICAgYWVzKHg9U2NvcmUsIHk9YEdEUCBwZXIgY2FwaXRhYCwKICAgICAgICAgICAgICAgICBjb2xvdXI9SGFwcGluZXNzX0NhdGVnb3J5KSkKcCA8LSBwICsgc2NhbGVfY29sb3JfZGlzY3JldGUobmFtZT0iSGFwcGluZXNzIENhdGVnb3J5IikKI2FkZCB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gbGluZSB0byB0aGUgcGxvdApwIDwtIHAgKyBzdGF0X3Ntb290aChtZXRob2Q9ImxtIikKI2FkZCBhIGxheWVyIGZvciB0aGUgcGxvdCB0eXBlIChwb2ludHMpIApwIDwtIHArZ2VvbV9wb2ludCgpKwogIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGw9ImdyZXkiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIikpCiMgbGFiZWwgdGhlIG91dGxpZXIgCnAgPC0gcCtnZW9tX3RleHQoYWVzKGxhYmVsPUhhcHBpbmVzc19JbmRleF8yMDE4JGxhYmVsKSwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh5PTAuMDUpKQojQWRkIHRpdGxlICwgTGFiZWwgYXhlcwpwIDwtIHArbGFicyh0aXRsZT0iSGFwcGluZXNzIEluZGV4IGluIENvbXBhcmlzb24gd2l0aCBHRFAgUGVyIENhcGl0YSBvZiB0aGUgQ291bnRyeSIsIAogICAgICAgeCA9ICJIYXBwaW5lc3MgSW5kZXggU2NvcmUiLAogICAgICAgeSA9ICJHRFAgUGVyIENhcGl0YSIpCiMgbWFrZSB0aXRsZSBhbmQgYXhlcyBib2xkLCBjaGFuZ2UgY29sb3Igb2YgYXhlcyBsYWJlbHMgZm9yIGJldHRlciByZWFkYWJpbGl0eSAKcCA8LSBwKyAKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIiwgc2l6ZT0xNiwgZmFjZT0iYm9sZCIsIGhqdXN0ID0gMC41KSwKICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dCggc2l6ZT0xMiwgZmFjZT0iYm9sZCIpLAogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KCBzaXplPTEyLCBmYWNlPSJib2xkIikKICApIAojcGxvdCAKcApgYGAKCiMjIENvbmNsdXNpb246IAotIENvdW50aWVzIGhhdmluZyBoaWdoIEdEUCBsaWtlIFVBRSB3aXRoIGEgR0RQIDIuMDk2IGRvZXNudCBxdWFsaWZ5IGFtb25nIHRoZSBoYXBwaWVzdCBuYXRpb24sIHdoZXJlYXMgQ29zdGEgUmljYSB3aXRoIGEgbXVjaCBsZXNzZXIgR0RQIG9mIDEuMDEwIGFwcGVhcnMgbXVjaCBoYXBwaWVyIGluZGljYXRpbmcgdGhhdCB3ZWFsdGggaXMgbm90IHByaW1hcmlseSBhbiBpbmRpY2F0aW9uIG9mIGhhcHBpbmVzcy4KCgojIyMjIyBFbmQKCgoK