-
[R샘플] 내추럴브레이크(Jenks Natural Breaks)R분석/함수 2023. 1. 19. 17:29728x90
양적 변수(quantitative variable)를 데이터 분류(data classification)하는 R 코드 샘플입니다.
등간격(Euqal Interval), 등분위(Quantile), 내추럴브레이크(Jenks Natural Breaks) 함수를 다루고 있습니다.
데이터 분류 방법에 대한 설명은 아래 링크를 참고하시기 바랍니다.
https://lion2ryan.tistory.com/20
데이터 분류(data classification) feat. Jenks Natural Breaks
양적 변수(quantitative variable)를 데이터 분류(data classification)하는 방법입니다. 등간격(Euqal Interval), 등분위(Quantile), 내추럴브레이크(Jenks Natural Breaks) 에 대해 알아봅니다. 1~36 사이 임의의 16개 변수
lion2ryan.tistory.com
내추럴브레이크 함수(getJenksBreaks)를 사용하기 위해서는 BAMMtools 라이브러리 설치가 필요합니다.
library(tidyverse) library(BAMMtools) samples = data.frame("value" = c(1,2,2,8,9,10,16,17,22,25,26,28,29,33,34,36)) grade = 4 #등분위(Quantile) #동일한 비율로 등급 구분 #(예)학생들의 성적을 상위20%까지 A, 20~40%사이는 B학점, ... 으로 분류 quantile_rate = nrow(samples)/grade df_quantile = data.frame("value"=0, "grade"="") df_quantile = df_quantile[-1,] for(i in 1:grade) { tmps = samples$value[((i-1)*quantile_rate+1):(i*quantile_rate)] df_quantile = df_quantile %>% add_row(value=tmps, grade=chartr("123456789", "ABCDEFGHI", i)) } print(df_quantile) #등간격(Equal Interval) #동일한 간격으로 등급 구분 #(예)학생들의 성적(0~100점)을 등간격 방법을 이용하여 80점 이상은 A, 60~80점은 B, 40~60점은 C등급, ... 으로 분류 equaliterval_rate = (max(samples)-min(samples))/grade df_equaliterval = data.frame("value"=0, "grade"="") df_equaliterval = df_equaliterval[-1,] for(i in 1:grade) { tmps = (samples %>% filter(value>=((i-1)*equaliterval_rate+min(samples)) & value<=(i*equaliterval_rate+min(samples))))$value df_equaliterval = df_equaliterval %>% add_row(value=tmps, grade=chartr("123456789", "ABCDEFGHI", i)) } print(df_equaliterval) #내추럴브레이크 jenks <- getJenksBreaks(samples$value, grade+1, subset = NULL) jenks[1] = min(samples$value)-1 #첫 인덱스 값은 min 값이므로 min 보다 1작은수부터 범위 정한다. df_jenks = data.frame("value"=0, "grade"="") df_jenks = df_jenks[-1,] for(i in 2:length(jenks)) { tmps = (samples %>% filter((value>jenks[i-1]) & (value<=jenks[i])))$value df_jenks = df_jenks %>% add_row(value=tmps, grade=chartr("123456789", "ABCDEFGHI", i-1)) } print(df_jenks)
728x90'R분석 > 함수' 카테고리의 다른 글
[R] 패키지 오프라인 설치 (0) 2023.03.30 [R] st_read() 한글 깨짐 (0) 2023.03.23 [R 샘플] shp 활용 (0) 2023.02.08 [R, Python 샘플] 엑셀 csv파일 한글 깨짐 현상 (0) 2023.02.02 [R샘플] 연관분석(eclat, apriori) (0) 2023.01.26