본문 바로가기

DATA SCIENCE/ADSP

[ADsP] 3-2. R 프로그래밍 기초

1. R 소개

R : 통계, 데이터마이닝, 그래프를 위한 오픈소스 프로그램

  SAS, SPSS R
비용 비쌈 무료
설치용량 대용량 모듈화 (간단)
모듈지원 별도 구매 오픈소스
최근 알고리즘/기술 반영 slow fast
학습자료 입수 편의성 유료 위주 공개 자료
질의 공개 커뮤니티  없음 있음
  • R 특징
    - 오픈소스 프로그램 (커뮤니티, 5000개 패키지 수시 업데이트)
    - 그래픽 및 성능 월등
    - 시스템 데이터 저장 방식 : 각 세션마다 저장하여 매번 로딩할 필요 X
    - 모든 운영체제 사용 가능
    - 표준 플랫폼 : S 통계언어 기반(통계전문가들의 표준 플랫폼)
    - 객체지향언어 & 함수형 언어
> 객체지향 : 결과값 객체 반환 - 필요한 부분만 추출 가능
> 함수형 : 단축, 수행속도 빠름, 단순 코드로 디버깅 노력 감소, 병렬 프로그래밍 전환 용이
  • R Studio
    - 오픈소스, 다양 운영체계 지원

    - 메모리의 변수, 타입 볼 수 있음 / 스크립트 관리 및 도큐먼테이션 편리
    - 래틀(rattle) : GUI가 패키지와 긴밀하게 결합 → 정해진 기능만 사용 가능, 업그레이드 안되면 통합성 문제 발생
  • R 기반 작업환경
    - 64bit 듀얼코어, 32GB RAM, 2TB 디스크, 리눅스 운영체제 추천
    - 64bit 유닉스 : 메모리 무제한 / x86 64bit : 128TB 지원 / 64bit 윈도우 : 8TB 지원

2. R 기초

  • R 화면 구성
    - 스크립트 : R 명령어 입력
    - 워크스페이스 : 할당된 변수, 데이터 나타남
    - 콘솔 : 명령문 실행, 설치된 패키지, plot, help 보여주는 창
  • 환경 설정 기능
    - 작업환경 설정 : dir.create("...") / setwd("...") / getwd()
    - 도움말 : RSiteSearch("함수명")
    - 패키지 도움말 : library(help=패키지명) / help(package=패키지명)
    - 히스토리 기능 : history() / savehistory(file="..") / loadhistory(file="..")
    - 프로그램 파일 실행 : source("파일명")으로 스크립트 파일 실행
    - 출력 방향을 특정 파일로 지정 : sink("")
    - 그래픽 출력 pdf 파일로 지정 : pdf(".pdf") / dev.off()로 파일 닫기
    - 배치모드기능 : 매일 돌아가야하는 시스템에서 프로세스 자동화 시 유용 (윈도우 도스창에서 $R CMD BATCH batch.R 실행)
  • 변수 처리 기능
    - 출력 : print() - 하나의 객체만 / cat() - 여러 항목 묶어서 출력
    - 값 할당 : <-, <<-, =, ->
    - 변수 목록 : ls(), ls.str()
    - 변수 삭제 : rm()
    - expr : 지역변수(함수 종료 시 삭제됨, <<-로 전역변수로 바꿀 수 있음)
    - 수열 : seq(from=, to=, by=, length.out=)
    - 반복 : rep(수열, time=, each=)
    - 문자 붙이기 : paste(문자, sep=)
    - 문자열 추출 : substr(문자열, 시작점, 끝점)
    - %/% : 나눗셈 몫 , %% : 나눗셈 나머지, %*% : 행렬 곱
    - mean(), median(), sd(), var(), cov(), cor()

3. 입력과 출력

  • 데이터 분석과정
    - 분석 목적 맞는 적절 분석 방법론 선택 → 정확 분석 통해 얻은 결과를 통찰력 가지고 해석 → 분석 과정 종료
    - 데이터 핸들링 : 다양한 전처리 작업 거쳐 분석 가능 형태로 재정리
    - 데이터 출력 : 분석 결과 이해하기 쉽고 잘 해석할 수 있도록 생산
  • R에서의 데이터 입출력
    - Unix 개발자들의 모듈화된 도구(작고 한가지만 잘하는 컴포넌트를 개발하자)라는 개념에서 만들어짐
    - 통계연산, 그래픽처리를 할 수 있는 구조로 (전문적 전처리는 perl, ruby, python 이용)
  • R에서 다룰 수 있는 파일 타입
    - tab-delimited text, comma-separated text, excel file, json file, html/xml file, database, ...
  • Import/Export
    - 출력 자리수 정의 : print(, digits=), cat(format(,digits=),"\n"), options(digits=num)
    - 파일에 출력 : cat("출력내용", 변수, "\n", file="파일이름", append=T)
    - 파일목록보기 : list.files(recursive=T, all.files=T)
    - 고정자리수 데이터 파일(fixed-width-file) : read.fwf("파일명", widths=c(...))
    - html 파일 : library(XML), readHTMLTable(url)
    - 웹테이블 : readLines(".txt", n=num), scan(".txt", what=토큰을 어떤 걸로 해석할지)

4. 데이터 구조와 data frame

  • data frame 처리
    - data frame 생성 : data.frame(벡터, 벡터, ...)
    - 레코드 생성 : record <- data.frame(a=1, b=2, c=3, d="4")
    - 행결합 : rbind(df1, df2)
    - 열결합 : cbind(df1, df2)
    - 조회 : df[df$col="hi"]; subset(df, select=col, subset=col>조건)
    - 병합 : merge(df1, df2, by=colname공통인거)
    - 열이름 : colnames(df)
    - 열제거 : subset(df, select=-"열이름")
    - 결측치 제거 : na.omit(df)
    - 데이터프레임 접근 : with(df, expr), attach(df), detach(df)
  • 자료형 변환
    - as.character(); as.complex(); as.numeric(); as.double(); as.integer(); as.logical()
    - as.data.frame(); as.list(); as.matrix(); as.vector()
  • 벡터 기본 연산
    - sapply(변수, 연산함수)
    - 파일 저장 : write.csv(변수명, "파일명"); save(변수명, file="파일명.Rdata")
    - 파일 읽기 : read.csv("파일명"); load("파일명.R")
    - 변수 삭제 : rm(변수); rm(list=ls(all=TRUE))

5. 데이터 변형

  • 벡터 여러 집단으로 분할 : split(), unstack()
  • lapply : 결과 리스트로 반환 / sapply : 결과 벡터, 행렬로 반환
  • apply(mat, 1, func)
  • tapply(vec, factor, func) / by(dfm, factor, func)
  • mapply(factor, vec1, ...)

 

출처 : ADsP 데이터 분석 준전문가 (윤종식 저)

반응형