1. R 소개
1. 분석환경의 이해
통계패키지 R
- 오픈소스 프로그램으로 통계, 데이터 마이닝과 그래프를 위한 언어 ⇒ 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경
- 다양한 최신 통계 분석 및 마이닝 기능을 R 플랫폼에서 제공
- 전 세계적으로 사용자들이 다양한 예제를 공유
- 뉴질랜드 오클랜드 대학의 로스 이하카와 로버트 젠틀맨에 의해 시작되어 현재는 R코어 팀이 개발하고 있다
- R은 GPL(General Public License)하에 배포되는 S프로그래밍 언어로 구현되어 GNU S라고도 한다
- 다양한 최신 알고리즘을 제공해 다양한 시도 가능
- 기능들의 자동화가 비교적 쉬움
분석 도구의 비교
R의 특징
- 표준 플랫폼(S언어 기반)
- 모든 운영체제에서 사용 가능(맥, 리눅스, 윈도우)
- 메모리 저장방식
- 객체지향언어이며 함수형 언어
- 오픈소스 프로그램으로 무료
R 스튜디오
-
오픈소스이고 다양한 운영체제를 지원
-
R스튜디오는 메모리에 변수가 어떻게 되어 있는지 타입과 무엇인지를 볼 수 있고, 스크립트 관리와 도큐먼테이션이 편하다.
-
메모리에 변수가 어떻게 돼있는지 타입이 무엇인지 볼 수 있고 스크립트 관리와 문서화가 편해 R studio 사용
-
래틀과 R의 장단점
R 기반의 작업환경
- 작업환경은 업무 규모와 본인에게 익숙한 환경이 무엇인지를 기준으로 선택
- 기업환경에서는 64bit 환경의 듀얼코어, 32GB RAM, 2TB 디스크, 리눅스 운영체제를 추천
- 가용 물리적 메모리 크기는 x86 64비트 시스템에서는 128TB가 한계 64비트 윈도우 운영체제에서는 8TB의 메모리까지 지원
2. R 기초
통계 패키지 R
R 스튜디오 구성화면
- 스크립트 : R 명령어 입력하는 창. : 명령어를 실행할 때는 실행하려는 문장에 커서를 두고 Ctrl + Enter
- 콘솔 : 스크립트 창에서 실행한 명령문이 실행되는 것을 볼 수 있는 곳. 오류 있으면 에러메시지 뜸. 명령어 직접 입력하면 저장 안돼 재실행 불가
- 워크스페이스 : 할당된 변수와 데이터 나타남
- Search Results : 설치된 패키지와 help 등 볼 수 있음
패키지
- 패키지 : R함수, 데이터 및 컴파일 코드의 모임
- 패키지 자동설치 : install.package("패키지명")
- 패키지 수동설치 : install.package("패키지명", "패키지위치")
- 패키지 도움말
- library(help=AID) : 다운로드 된 AID패키지의 help 다큐먼트를 보여줌
- help(package=AID) : 웹을 통해 AID패키지의 다큐먼트를 보여줌
프로그램 파일 실행
배치모드 기능
-
배치모드 : 매일 돌아가야 하는 프로그램을 시스템에서 프로세스를 자동으로 구동하는 작업을 할 때 유용
-
배치파일 실행 명령 : 윈도우 창에서 batch.R 실행파일이 있는 위치에서 $R CMD BATCH batch.R 실행
-
Path 지정
: 내 컴퓨터에서 오른쪽 마우스 클릭 → 속성 → 고급시스템 설정 → 환경변수 클릭 → 변수명이 path를 클릭 → R프로그램의 실행파일의 위치를 찾아서 추가 → 저장
변수와 벡터 생성
변수 다루기
- R에서는 변수명만 선언하고 값을 할당하면 자료형태를 스스로 인식하고 선언한다
- 화면에 프린트하고자 할 때, print()를 사용해도 되지만, 변수 값만 표현해도 내용을 출력해준다
- 변수에 값을 할당할 때는 대입연산자(<-, <<-, =, -> , ->>)를 사용할 수 있으나 <- 를 추천한다
- 메모리에 불필요한 변수가 있는지 확인하기 위해서는 Is() 를 활용하고 삭제는 rm() 을 활용한다
- R기초 중에 기초
- R 프로그램 소개
기본적인 통계량 계산
- 평균 mean()
- 중간값 median()
- 표준편차(Standard deviation) sd()
- 분산(variance) var()
- 공분산(covariance) cov()
- 상관계수(correlation number) cor()
- 벡터의 연산
- 벡터의 기초통계
함수의 생성 및 활용
- R은 함수형 언어이기 때문에 프로그래머가 직접 활용 가능한 함수를 생성하여 활용할 수 있다
- 함수는 function(매개변수1, 매겨분수2, ..) 선언하고, 표현식이 2줄 이상인 경우는 {} 로 묶어서 함수의 범위를 설정한다
- 표현식은 변수 할당, 조건문(if문)과 반복문(for문, while문, repeat문) 그리고 전달값(return)으로 구성된다
- R 프로그래밍시 자주하는 실수
3. 입력과 출력
데이터 분석 과정
- 분석자가 분석 목적에 맞는 적절한 분석 방법론을 선택해서 정확한 분석을 통해 얻은 결과를 통찰력을 가지고 해석함으로써 분석 과정을 마치게 된다
- 데이터 핸들링 : 입력된 데이터를 다양한 전처리 작업을 거쳐 분석이 가능한 형태로 재정리하는 것
R에서의 데이터입력과 출력
-
R에서 처리할 수 있는 데이터 타입
: Tab-delimited text, Comma-separated text, Excel file, JSON file, HTML/XML file, Database, (Other) Statistical SW's file
- R에서는 텍스트 마이닝 뿐만 아니라 데이터베이스와 다양한 통계 프로그램에서 작성된 데이터를 불러들여서 적절한 데이터 분석을 수행할 수 있다
- R에서는 부동소수점 표현 시 7자릿수를 기본으로 세팅되어 있으며 option() 함수에 a digit="숫자" 를 지정해서 자릿수를 변경할 수 있다
- 파일에서 문자를 출력하고자 할 때 cat("출력할 내용", file="파일명")
- R에서는 역슬래쉬(\)를 인식하지 못하므로 슬래시(/) 또는 역슬래쉬 쌍(\\)으로 파일의 경로를 지정한다
외부 파일 입력과 출력
- 고정자리 변수 파일 read.fwf("파일명", width=c(w1, w2, ..))
- 구분자 변수 파일 read.table("파일명", sep="구분자")
- csv 파일 읽기 read.csv("파일명", header=T)
- csv 파일 출력 write,csv(데이터 프레임, "파일명")
웹페이지(web page)에서 데이터 읽어오기
-
파일 다운로드 read.csv("<http://www.example.com/download/data.csv>) read.table("<http://www.example.com/download/data.txt>)
-
ftp에서 파일 다운로드
read.csv("<ftp://ftp.example.com/download/data.csv>)
-
html에서 테이블
library(XML) url<- "<http://www.example.com/data/table.html>" t<- readHTMLTable(url) -
데이터 입력 출력과 관련된 R 코드
4. 데이터 구조와 데이터 프레임
R에서의 자료형태(mode)
벡터(Vector)
- 벡터의 모든 원소는 동질적 ⇒ 같은 자료형 또는 같은 모드
- 위치로 인덱스 된다
- 인덱스를 통해 여러 개의 원소로 구성된 하위 벡터를 반환할 수 있다
- 벡터 원소들은 이름을 가질 수 있다
리스트(Lists)
- 이질적 ⇒ 여러 자료형의 원소들이 포함 가능
- 위치로 인덱스 된다
- 인덱스를 통해 하위 리스트를 추출할 수 있다
- 리스트의 원소들은 이름을 가질 수 있다
벡터와 리스트의 차이 벡터에서 모든 원소는 같은 모드 리스트는 원소들이 다른 모드여도 OK
데이터 프레임(data frames)
- 강력하고 유연한 구조 ⇒ SAS의 데이터셋을 모방해서 만들어진다
- 데이터 프레임의 리스트의 원소는 벡터 또는 요인
- 그 벡터와 요인은 데이터 프레임의 열
- 벡터와 요인들은 동일한 길이
- 데이터 프레임은 표 형태의 데이터 구조, 각 열은 서로 다른 데이터 형식을 가질 수 있다
- 열에는 이름이 있어야 한다
그 밖의 데이터 구조
- 단일값(scalars) : 원소가 하나인 벡터로 인식/처리
- 행렬(matrices) : 차원을 가진 벡터로 인식/처리
- 배열(arrays) : 3차원 또는 n차원까지 확대된 행렬
- 요인(factors) : 고유값(value)이 요인의 수준(level)로 구성된 벡터(범주형 변수, 집단 분류)
[ 벡터, 리스트, 행렬 다루기 ]
- R에서 활용하는 벡터, 리스트, 행렬 코드
벡터 다루기
- 재활용 규칙 : 길이가 서로 다른 두 벡터에 대해 연산을 할 때, R은 짧은 벡터의 처음으로 돌아가 연산이 끝날 때까지 원소들을 재활용
리스트 다루기
- 리스트 원소 선택 L[[n]] L[["name"]] L$name
행렬 다루기
- 행렬은 R에서 차원을 가진 벡터이며, 텍스트마이닝과 소셜네트워크 분석 등에 활용
- 행렬 설정 dim(vec)<-c(2,3)
- 행과 열 이름 붙이기 rownames(mtrx)<-c("lowname1","lowname2",...) colnames(mtrx)<-c("colname1","colname2",...)
데이터프레임 다루기
-
열 데이터(변수)로 데이터 프레임 만들기 dfm<-data.frame(v1,v2,v3,f1,f2)
dfm<-as.data.frame(list.of.vectors)
-
데이터 프레임 내 데이터 선택
dfm[[1]] dfm[["name"]] dfm$name dfm[1,] dfm[,1]
-
데이터 프레임 결합 rbind() : 두 데이터프레임의 행 쌓기 cbind() : 두 데이터프레임의 열 이어붙이기 merge() : 행 정렬 안 되거나 동일한 순서로 안 나타나도 상관없음
-
데이터 프레임 추출 subset() : 데이터세트에서 조건에 맞는 내용 조회 (리스트와 벡터에서도 선택 가능)
-
R에서 활용하는 데이터 프레임 코드
자료형 데이터 구조 변환
데이터 구조를 다른 구조로 바꾸고 싶을 때 변환 적용 안 되면 NA값 나타남
- as.data.frame(x) : 데이터프레임 형식으로 변환
- as.list(x) : 리스트 형식으로 변환
- as.matrix(x) : 행렬 형식으로 변환
- as.vector(x) : 벡터 형식으로 변환
- as.factor(x) : 팩터(factor) 형식으로 변환
- as.numeric(논리값) : FALSE=0, TRUE=1
- as.character(숫자) : 숫자를 문자로
5. 데이터 변형
주요 코드