#``` TAKE CARE OF CSV FILES (NAs, FACTOR, ETC) PROBLEMS
setClass("num.with.commas")
setAs("character", "num.with.commas", 
        function(from) as.numeric(gsub(",", "", from) ) )
aom_all <- read.csv("c:/bigdata/dev/projects/indicator_age_of_marriage.csv")
View(aom_all)
class(aom_all)
## [1] "data.frame"
dim(aom_all)
## [1] 601 117
str(aom_all)
## 'data.frame':    601 obs. of  117 variables:
##  $ X    : Factor w/ 186 levels "","Afghanistan",..: 2 3 4 5 6 7 8 9 10 11 ...
##  $ X1616: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1666: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1685: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1710: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1716: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1735: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1760: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1766: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1775: int  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1780: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1785: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1791: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1800: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1810: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1815: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1825: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1835: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1840: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1845: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1855: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1860: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1865: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1866: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1870: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1875: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1879: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1880: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1885: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1887: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1890: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1895: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1897: num  NA NA NA NA NA 17 NA NA 16.2 NA ...
##  $ X1900: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1901: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1903: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1905: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1906: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1907: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1910: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1911: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1915: num  NA NA NA NA NA NA 24.5 NA NA NA ...
##  $ X1920: num  NA NA NA NA NA NA 24.4 NA NA NA ...
##  $ X1921: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1925: num  NA NA NA NA NA NA 24.5 NA NA NA ...
##  $ X1928: int  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1930: num  NA NA NA NA NA ...
##  $ X1931: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1935: num  NA NA NA NA NA NA 24.5 NA NA NA ...
##  $ X1937: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1939: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1940: num  NA NA NA NA NA NA 24.2 NA NA NA ...
##  $ X1941: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1942: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1943: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1944: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1945: num  NA NA NA NA NA NA 23.3 NA NA NA ...
##  $ X1946: num  NA 21.5 NA NA NA ...
##  $ X1947: num  NA NA NA NA NA NA NA 25.9 NA NA ...
##  $ X1948: num  NA NA 20 NA NA NA NA NA NA NA ...
##  $ X1949: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1950: num  NA NA NA NA NA NA 22.6 25.3 NA NA ...
##  $ X1951: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1952: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1953: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1954: num  NA NA 19.6 NA NA NA NA NA NA NA ...
##  $ X1955: num  NA 21 NA NA NA NA 22.1 NA NA NA ...
##  $ X1956: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1957: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1958: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1959: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1960: num  NA NA NA NA NA ...
##  $ X1961: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1962: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1963: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1964: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1965: num  NA NA NA NA NA NA 21.2 NA NA NA ...
##  $ X1966: num  NA NA 18 NA NA NA NA NA NA NA ...
##  $ X1967: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1968: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1969: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1970: num  NA 21.5 19.3 19.4 23.1 ...
##  $ X1971: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1972: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1973: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1974: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1975: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1976: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1977: num  NA NA 20.9 NA NA NA NA NA NA NA ...
##  $ X1978: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1979: num  17.8 NA NA NA NA ...
##  $ X1980: num  NA NA NA NA NA ...
##  $ X1981: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1982: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1983: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1984: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1985: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1986: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ X1987: num  NA NA 23.8 NA NA NA NA NA NA NA ...
##   [list output truncated]
aom <- data.frame(aom_all[,1], round(aom_all$X2005, digits = 2))
names(aom) <- c("country", "age"); names(aom)
## [1] "country" "age"
View(aom)
aom <- subset(aom, !is.na(aom$age)) 
summary(aom)
##         country         age       
##  Afghanistan:  1   Min.   :17.60  
##  Albania    :  1   1st Qu.:21.80  
##  Algeria    :  1   Median :23.57  
##  Argentina  :  1   Mean   :24.53  
##  Armenia    :  1   3rd Qu.:27.35  
##  Australia  :  1   Max.   :33.27  
##  (Other)    :169
aom_top <- head(aom[order(aom$age, decreasing=TRUE), ], n=length(aom[,1]))

aom_btm10 <- head(aom[order(aom$age, decreasing=FALSE), ], n=10)

aom_top10 <- head(aom[order(aom$age, decreasing=TRUE), ], n=10)
aom_top <- data.frame('rank' = 1:length(aom_top[,1]), aom_top)
View(aom_top)
library(ggplot2)
qplot(aom_top10$age)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

logScale <- qplot(x = log10(age), data = aom_top10)
countScale <- ggplot(aes(x = age), data = aom_top10) +
  geom_histogram() +
  scale_x_log10() 
  
countScale_top <- ggplot(aes(x = age), data = aom_top10) +
    geom_histogram() +
    scale_x_log10() 

sqrtScale <- qplot(x = sqrt(age), data = aom) 

library(gridExtra)
grid.arrange(countScale, logScale, sqrtScale, ncol=2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

qplot(x = age, data = aom, color = I('black'), 
    fill = I('#099DD9'), binwidth = 10) +
    facet_wrap(~country, scale = "free_y")

ggplot(aes(x = age), data = aom) +
    geom_histogram(binwidth = 1, fill = '#ff0000') +
    scale_x_continuous(breaks = seq(0, 50, 1))

summary(aom)
##         country         age       
##  Afghanistan:  1   Min.   :17.60  
##  Albania    :  1   1st Qu.:21.80  
##  Algeria    :  1   Median :23.57  
##  Argentina  :  1   Mean   :24.53  
##  Armenia    :  1   3rd Qu.:27.35  
##  Australia  :  1   Max.   :33.27  
##  (Other)    :169
qplot(x = age, data = aom, color = I('black'), fill = I('#0003E5'))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggsave('ageHistogram.jpeg')
## Saving 7 x 5 in image
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
qplot(x = age,
    data = aom, 
    main = 'Average Age of Marriage',
    xlab = 'Country',
    ylab = 'Age of Marriage',
    binwidth = 1, color = I('black'), fill = I('#881144')) +
    scale_x_continuous(limits = c(15, 35), breaks = seq(5, 35, 10))

ggsave('ageHistogram2.png')
## Saving 7 x 5 in image
qplot(x = age,
      data = aom_btm10, 
      main = 'Average Age of Marriage- Bottom 10',
      xlab = 'Country',
      ylab = 'Age of Marriage (Bottom 10',
      binwidth = 0.5, color = I('black'), fill = I('#006633')) +
    scale_x_continuous(limits = c(17, 19), breaks = seq(17, 19, 0.25))

ggsave('ageHistogramBtm10.png')
## Saving 7 x 5 in image
qplot(x = age,
      data = aom_top10, 
      main = 'Average Age of Marriage - Top 10',
      xlab = 'Country',
      ylab = 'Age of Marriage (Top 10',
      binwidth = 0.5, color = I('black'), fill = I('#ff0000')) +
    scale_x_continuous(limits = c(30, 35), breaks = seq(30, 35, 1))

ggsave('ageHistogramTop10.png')
## Saving 7 x 5 in image
# by(aom$country, aom$age, summary)

qplot(x =age, data = aom, color = I('black'), fill = I('#ff0040'), binwidth =10) +
  facet_wrap(~country, scale = "free_y")

qplot(y = age, x = country, data = aom, 
      geom = 'boxplot') +
          coord_cartesian(ylim = c(15, 35))

qplot(x = age, data = aom) + facet_wrap(~country,  scales="free_y")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

qplot(x =age, data = aom, color = I('black'), 
    fill = I('#0080ff'), binwidth = 10) +    
    facet_wrap(~country, scales="free_y") 

qplot(x = country, y = age, data = aom, geom = "boxplot")  + 
  coord_cartesian(ylim = c(15,35))

  qplot(x = country, y =age, data = aom, geom = "boxplot") + 
  coord_cartesian(ylim = c(15, 35))

# by(aom$age, aom$country,summary)

qplot(x = country, y = age, data = aom, geom = "boxplot") 

qplot(x = country, y = age, data = aom, geom = "boxplot") + 
  coord_cartesian(ylim = c(15, 35))