#``` 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))
