Introduction to KSIC

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

KSIC(Korea Standard Industrial Classification)
한국표준산업분류

Jongjin Yun (2025-07-29)

library(KSIC)

This package provides tools to utilize the Korea Standard Industrial Classification (KSIC) in R.

R에서 한국표준산업분류(KSIC)를 이용하기 위한 패키지입니다.

The data is sourced from: 데이터의 출처는 아래와 같습니다.

Installation

You can install the KSIC package from GitHub with: KSIC package는 아래와 같이 설치할 수 있습니다.

# install.packages("devtools")
devtools::install_github("urbanjj/KSIC")

Data

This package includes several built-in datasets to support the functions.

이 패키지에는 함수를 지원하기 위한 여러 내장 데이터셋이 포함되어 있습니다.

This table shows the number of categories in each KSIC revision.

KSIC 개정별 각 분류의 개수를 나타낸 표입니다.

| revision | Section
(Alphabet) | Division
(2 digit) | Group
(3 digit) | Class
(4 digit) | Sub-Class
(5 digit) | |:---|:---|:---|:---|:---|:---| | 11th | 21 | 77 | 234 | 501 | 1,205 | | 10th | 21 | 77 | 232 | 495 | 1,196 | | 9th | 21 | 76 | 228 | 487 | 1,145 |


Global Option for KSIC Revision / 전역 옵션 설정

You can set a global default for the KSIC revision (the C parameter) using R's options() function. This avoids having to specify the revision in every function call if you are consistently working with one version. The default is 11.

R의 options() 함수를 사용하여 KSIC 차수(C 매개변수)에 대한 전역 기본값을 설정할 수 있습니다. 이렇게 하면 특정 버전으로 계속 작업하는 경우 모든 함수 호출에서 차수를 지정할 필요가 없습니다. 기본값은 11입니다.

Example / 사용 예시:

library(KSIC)
# Set the default KSIC revision to the 10th
# 기본 KSIC 차수를 10차로 설정
options(ksic.C = 10)

# Now, ksic() and other functions will use C = 10 by default
# 이제 ksic() 및 다른 함수들은 기본적으로 C = 10을 사용합니다.
head(ksic(digit = 1))

# Reset to the default (11th revision)
# 기본값(11차)으로 재설정
options(ksic.C = 11)

Core Functions / 주요 함수

This package offers four main functions designed for efficiency and flexibility.

이 패키지는 효율성과 유연성을 고려하여 설계된 네 가지 주요 함수를 제공합니다.

ksic()

Retrieves a data.frame of KSIC data filtered by a specific revision and digit level. The default revision is 11.

특정 차수와 자릿수 수준으로 필터링된 KSIC 데이터프레임을 가져옵니다. 기본 차수는 11차입니다.

Example / 사용 예시:

# Get 1-digit codes from the default 11th revision
head(ksic(digit = 1))

# Get 1-digit codes including English names
head(ksic(digit = 1, eng_nm = TRUE))

is_ksic()

Checks whether input codes are valid KSIC codes for the 9th, 10th, and 11th revisions.

입력된 코드가 9차, 10차, 11차 KSIC에서 유효한 코드인지 확인합니다.

Example / 사용 예시:

is_ksic(c("A", "01", "99999", "invalid_code"))

ksic_group()

Extracts the parent (upper-level) classification codes or names for a vector of KSIC codes. The default revision is 11.

주어진 KSIC 코드 벡터에 대한 상위 분류 코드 또는 이름을 추출합니다. 기본 차수는 11차입니다.

Key Features & Advantages / 주요 특징 및 장점:

Example / 사용 예시:

ksic_group(c("31311", "4631", "25", "A"), digit = 2, name = TRUE)

# Example with an invalid code
# 잘못된 코드가 포함된 예시
ksic_group(c("26222", "99999", "58221"), digit = 2, name = TRUE)

ksic_sub()

Extracts all child (lower-level) classification codes or names for a vector of KSIC codes. The default revision is 11.

주어진 KSIC 코드 벡터에 대한 모든 하위 분류 코드 또는 이름을 추출합니다. 기본 차수는 11차입니다.

Key Features & Advantages / 주요 특징 및 장점:

Example / 사용 예시:

result_list <- ksic_sub(c("26","96","52636"), digit = 4)
print(result_list)

# Example with an invalid code
# 잘못된 코드가 포함된 예시
ksic_sub(c("26", "99999", "58"), digit = 4)

ksic_convert()

Converts KSIC codes from one revision to another. 주어진 KSIC 코드를 한 차수에서 다른 차수로 변환합니다.

Important Note When converting between revisions, industry classifications may be merged, subdivided, or otherwise modified. This means a single code in one revision might map to multiple codes in another (1:N), or multiple codes might merge into one (N:1). ksic_convert returns a data frame reflecting these complex relationships. Users should carefully examine the results, especially when a one-to-one match is not guaranteed.

(중요) 차수 개정 시, 산업 분류는 통합, 분할 또는 변경될 수 있습니다. 즉, 특정 코드가 다른 차수에서 여러 코드로 나뉘거나(1:N), 여러 코드가 하나의 코드로 통합(N:1)될 수 있습니다. ksic_convert 함수는 이러한 복잡한 관계를 그대로 보여주는 데이터프레임을 반환하므로, 사용자는 변환 결과가 1:1이 아님을 주의하여야 합니다.

Example / 사용 예시:

# Convert 10th revision codes to 11th revision
ksic_convert(c("27192", "27195"), from_C = 10, to_C = 11)

# Convert 11th revision codes to 10th revision
ksic_convert(c("27192", "27195"), from_C = 11, to_C = 10)

ksic_search()

Searches for KSIC codes by a keyword in Korean or English classification names.

국문 또는 영문 분류명에 포함된 키워드로 KSIC 코드를 검색합니다.

Example / 사용 예시:

# Search for classifications containing "소프트웨어" in the 11th revision
ksic_search("소프트웨어")

# Search for 5-digit classifications containing "software" in the 10th revision (case-sensitive)
ksic_search("software", C = 10, ignore.case = FALSE, digit = 5)

ksic_find()

Retrieves KSIC information for a given vector of codes.

주어진 코드 벡터에 대한 KSIC 정보를 조회합니다.

Key Features & Advantages / 주요 특징 및 장점:

Example / 사용 예시:

# Find information for a mix of codes
ksic_find(c("A", "01", "58221", "99999"))

# The result is ordered by the input vector
ksic_find(c("58221", "01", "A"))

Practical Application / 활용 사례

Enriching a Dataset with ksic_group

You can easily use ksic_group to enrich your dataset by adding parent classifications.

ksic_group을 사용해 상위 분류 정보를 추가하여 데이터셋을 쉽게 확장할 수 있습니다.

my_data <- data.frame(
  company = c("A", "B", "C", "D"),
  ksic5_cd = c("26222", "58221", "26299", "61220")
)

my_data$ksic2_nm <- ksic_group(my_data$ksic5_cd, digit = 2, name = TRUE)
print(my_data)

Finding All Sub-Industries with ksic_sub

ksic_sub is useful for identifying all specific industries within a broader category. The list output can be easily converted into a tidy data frame for further analysis.

ksic_sub는 특정 상위 분류에 속하는 모든 세부 산업을 찾아낼 때 유용합니다. 리스트 형태의 출력 결과는 추가 분석을 위해 데이터프레임으로 쉽게 변환할 수 있습니다.

# 분석할 중분류 코드 정의
# Define mid-level divisions for analysis
target_divisions <- c("58", "61") # 출판업, 우편 및 통신업

# ksic_sub를 사용하여 세세분류(5-digit) 코드와 코드명 찾기
# Use ksic_sub to find all 5-digit sub-category codes and names
sub_codes_list <- ksic_sub(target_divisions, digit = 5, name = FALSE)
sub_names_list <- ksic_sub(target_divisions, digit = 5, name = TRUE)

# --- Base R Approach ---
# Base R을 사용하여 리스트를 데이터프레임으로 변환
# Convert the list to a data.frame using Base R
sub_categories_df_base <- data.frame(
  ksic2_cd = rep(names(sub_codes_list), lengths(sub_codes_list)),
  ksic5_cd = unlist(sub_codes_list, use.names = FALSE),
  ksic5_nm = unlist(sub_names_list, use.names = FALSE)
)
print(head(sub_categories_df_base))

# --- Tidyverse Approach ---
# A more concise approach using the tidyverse (tidyr, tibble)
# tidyverse(tidyr, tibble)를 사용한 방법 (더 간결함)
# if (!require(tidyr)) install.packages("tidyr") 
# if (!require(tibble)) install.packages("tibble")

# 1. Create a nested tibble where some columns are lists
# 1. 리스트를 열로 포함하는 중첩된 tibble 생성
nested_tibble <- tibble::tibble(
    ksic2_cd = names(sub_codes_list),
    ksic5_cd = sub_codes_list,
    ksic5_nm = sub_names_list
)
# Step 1: Nested tibble (before unnesting)"
print(nested_tibble)

# 2. Use tidyr::unnest() to expand the list-columns into regular rows
# 2. tidyr::unnest()를 사용하여 리스트 열을 일반적인 행으로 펼침
unnested_df <- tidyr::unnest(nested_tibble, cols = c(ksic5_cd, ksic5_nm))
# Step 2: Unnested tibble (final result)"
print(head(unnested_df))


Try the KSIC package in your browser

Any scripts or data that you put into this service are public.

KSIC documentation built on Aug. 18, 2025, 5:36 p.m.