R/transform_into_vc3d.R

#' Transforms the 2d dataframe of vaccination coverage to a 3d array of vaccination coverage.
#' 
#' @param vc2d The 2d dataframe of vaccination coverage for all countries included across all years included.
#' @param adm The administrative level used (adm0,adm1,adm2).
#' 
#' @examples
#' transform_into_vc3d(vc2d,adm1)
#' @keywords internal

transform_into_vc3d = function(vc2d, adm){
  
  #Just transform adm1 in adm0_adm1 /adm2 in adm0_adm2
  print(dim(vc2d))
  temp<-paste0(vc2d[,"adm0"], "_", vc2d[,"adm1or2"] )
  print(dim(vc2d))
  names(vc2d)[names(vc2d) == adm ]<-paste0("adm0_", adm)
  vc2d[, paste0("adm0_", adm)]<-temp
  print(dim(vc2d))
  adm0_adm<-paste0("adm0_", adm)
  
  vc3d<-rep(NA, nrow(vc2d)*(ncol(vc2d)-(which(names(vc2d) %in% "year")+1)))
  dim(vc3d)<-c(dim(vc2d[vc2d$year==1950,])[1], length(table(vc2d$year)), ncol(vc2d)-((which(names(vc2d) %in% "year"))+1))
 
  dn1<-paste(vc2d$adm0[1],"_",vc2d$adm0[1],1:(nrow(vc2d)/101),sep="")
  dn2<-as.numeric(names(table(vc2d$year))) 
  dn3<-paste("a",0:100,sep="")
  
  for(a in 1:(length(dn3))) { 
    for(y in min(dn2):max(dn2)) { 
      mm = match(vc2d[,adm0_adm][vc2d$year==y],dn1) 
      vc3d[mm,y-min(dn2)+1,a]=vc2d[vc2d$year==y,a+3]
    }
  }
  
  dimnames(vc3d)[[1]]<-dn1
  dimnames(vc3d)[[2]]<-dn2
  dimnames(vc3d)[[3]]<-dn3
  
  return(vc3d)
  
}
arranhamlet/popvac_package documentation built on May 10, 2019, 1:48 p.m.