Histograms in R
Parag Verma
Introduction
While analysing datasets, it is important to represent summary stats using appropriate graphs.In this series, we will look at how to create most commonly used plots using ggplot library. Real case scenarios will be taken to understand the nitty-gritties of implementation
Installing the library: dplyr,tidyr and Ecdat package
package.name<-c("dplyr","tidyr","Ecdat","ggplot2")
for(i in package.name){
  if(!require(i,character.only = T)){
    install.packages(i)
  }
  library(i,character.only = T)
}
# Ecdat package has the 'Health Insurance and Hours Worked By Wives' data
data(HI)
df<-HI
head(df)
  whrswk hhi whi hhi2  education  race hispanic experience kidslt6 kids618
1      0  no  no   no 13-15years white       no       13.0       2       1
2     50  no yes   no 13-15years white       no       24.0       0       1
3     40 yes  no  yes    12years white       no       43.0       0       0
4     40  no yes  yes 13-15years white       no       17.0       0       1
5      0 yes  no  yes  9-11years white       no       44.5       0       0
6     40 yes yes  yes    12years white       no       32.0       0       0
   husby       region   wght
1 11.960 northcentral 214986
2  1.200 northcentral 210119
3 31.275 northcentral 219955
4  9.000 northcentral 210317
5  0.000 northcentral 219955
6 15.690 northcentral 208148
Step 1:Frequency Profile of the variables
Lets look at the count of records for different levels of categorical variables 
interim.df<-df%>%
  select(hhi,whi,hhi2,education,race,hispanic,kidslt6,kids618,region)
  
l1<-lapply(colnames(interim.df),function(x){
  z<-interim.df%>%
    select(x)%>%
    mutate(Feature=x)
  
  colnames(z)<-c("Level","Feature")
  
  z1<-z%>%
    group_by(Feature,Level)%>%
    summarise(Total=n())
  
  z1["Level"]<-sapply(z1["Level"],as.character)
  
  return(z1)
})
df.final<-do.call(rbind.data.frame,l1)%>%
  as.data.frame()
row.names(df.final)<-NULL
head(df.final)
  Feature Level Total
1     hhi    no 11219
2     hhi   yes 11053
3     whi    no 13961
4     whi   yes  8311
5    hhi2    no  8696
6    hhi2   yes 13576
Histograms of all the Categorical Variables
lapply(unique(df.final[["Feature"]]),function(y){
p<-ggplot(data=df.final%>%
            as.data.frame()%>%
            filter(Feature==y), aes(x=Level, y=Total)) +
  geom_bar(stat="identity",fill = "orange")+
  ggtitle("Barplot") +
  xlab(y)+ylab("Frequency Count")+
  theme(plot.title = element_text(hjust = 0.5))# hjust value of 0.5 centre aligns the title
p
  
})
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
[[7]]
[[8]]
[[9]]
 
Final Comments
The above plot helps us to understand how the frequency summary can be visually represented using ggplot
Link to Previous R Blogs
List of Datasets for Practise
https://hofmann.public.iastate.edu/data_in_r_sortable.html
https://vincentarelbundock.github.io/Rdatasets/datasets.html