본문 바로가기

R grep을 이용한 데이터프레임 필터링 R의 주요 데이터포맷인 데이터프레임(data.frame)을 사용하다보면 필터링을 해야 되는 경우가 많다. 필터링하는게 어렵지는 않지만 데이터프레임의 데이터가 많을 수록 성능이슈가 발생한다. 데이터가 클수록 필터링 속도는 현저하기 느려진다. 물론 이러한 성능이슈를 도와주는 R의 여러 패키지가 존재하며 대표적으로 data.table 패키지가 있다. 해당 패키지는 RDBMS와 유사하게 데이터를 인덱싱하여 보다 빠른 필터링 및 그외 여러기능을 제공한다. (더 자세히 알고 싶다면 여기를 참고) 여기서는 data.table과 같은 패키지를 사용하지 않고 보다 빠르게 필터링 하는 방법을 알아보고자 한다. 우선 기본적인 R에서 데이터프레임을 필터링하는 방법으로는 아래 2가지가 대표적(?)이다. df1 더보기
R을 이용한 이상치 분석 이상치(Outlier)라고 하면 특정 데이터 변수의 분포에서 비정상적으로 벗어난 값을 뜻한다.예를 들면 어떤 학생이 신체검사를 했다고 치자 A학생은 몸무게와 키가 각각 100kg, 150cm나왔다.이 A학생은 일반적으로 생각했을때 키에 비해 몸무게가 많은 것으로 보인다. (여기서는 몸무게와 키는 상관관계가 높은 것으로 간주한다.)그럼 이 A학생은 속한 학년 반 또는 또래 아이들에 비해 비정상(여기서 이상치)이 맞을까? 위 질문에 대한 이상치 분석을 한번 해보자.이상치 분석을 위한 모델 데이터는 A학생이 포함된 반의 학생들의 몸무게, 키 데이터이며 변수는 몸무게, 키로만 한정지어 분석해보고자 한다. 모델에 대한 종속변수는 몸무게이며 설명변수는 키가 된다. 우선 데이터를 한번 만들어보자.(실제 데이터가 없으.. 더보기
MySQL(MariaDB) 사분위수 구하기 특정 데이터 분포를 쉽게 확인할 수 있는 수치로는 최소값, 중간값, 평균값, 최대값 그리고 사분위수가 있다.사분위수는 데이터의 균등한 분할로 25%, 50%, 75%, 100%를 나타내며 1사분위수(1Q)는 25% 값에 해당한다. 사분위수를 알아내면 BOXPLOT과 같은 Chart를 통해 데이터 분포를 시각화 할 수 있을 것이다.아쉽게도 R과 같은 통계언어의 경우는 쉽게 사분위수를 구할 수 있으나 MySQL의 경우는 지원하는 내장함수가 존재하지않는다. 그래서 SQL를 통해 사분위수를 구할 수 있는 방법을 알아 보고자 한다. boxplot 해석을 돕기 위한 그림(출처) SET GROUP_CONCAT_MAX_LEN = 10485760; SELECT MIN(COLUMN_NAME) AS 'MIN', SUBSTR.. 더보기