R/ksic_sub.R

Defines functions ksic_sub

Documented in ksic_sub

#' subsetting ksic sub code
#' @export
ksic_sub <- function(ksic, digit=5, C=10){
  p_d <- as.numeric(digit)
  p_C <- as.numeric(C)
  if(!p_d %in% c(1:5)){
    stop("digit이 잘못 입력되었습니다.")
  } else if(!p_C %in% c(9,10)){
    stop("차수가 잘못 입력되었습니다.")
  } else if(nchar(ksic)>=p_d){
    stop("ksic의 digit이 digit과 같거나 더 큽니다.")
  } else if(!ksic %in% ksicDB[ksicDB$ksic_C==paste0("C",p_C),]$ksic_cd){
    stop(paste0("ksic가 ",C,"차에 없습니다."))
  } else{
  SubDB <- ksicSubDB[ksicSubDB$ksic_C==paste0("C",p_C),]
  if(digit == 2){
    z <- SubDB
  } else if(digit==3){
    z <- tidyr::unnest(SubDB, 'd2')
  } else if(digit==4){
    z <- tidyr::unnest(SubDB, 'd2')
    z <- tidyr::unnest(z, 'd3')
  } else if(digit==5){
    z <- tidyr::unnest(SubDB, 'd2')
    z <- tidyr::unnest(z, 'd3')
    z <- tidyr::unnest(z, 'd4')
  }
  z <- z[z[paste0("d",nchar(ksic),"_cd")]== ksic,]
  z <- z[,paste0("d",as.character(p_d))]
  names(z) <- "d"
  z <- tidyr::unnest(z, 'd')
  z1 <- z[,paste0("d",as.character(p_d),"_cd")]
  z2 <- z[,paste0("d",as.character(p_d),"_nm")]
  z <- cbind(paste0("C",p_C),z1,z2)
  names(z) <- c("ksic_C","ksic_cd", "ksic_nm")
  return(z)
  }
}
jongjinyun/KSIC documentation built on March 19, 2022, 5:36 a.m.