[R 소개]
1. R의 탄생
- R은 오픈소스 프로그램으로 통계, 데이터마이닝과 그래프를 위한 언어
- 다양한 최신 통계분석과 마이닝 기능을 제공하며, 5,000개에 이르는 패키지 수시 업데이트
2. 통계분석 도구의 비교
구분 | SAS, SPSS | R |
프로그램 비용 | 유료, 고가 | 오픈소스 |
설치용량 | 대용량 | 모듈화로 간간 |
다양한 모듈 지원 및 비용 | 별도구매 | 오픈소스 |
최근 알고리즘 및 기술반영 | 느림 | 매우빠름 |
학습자료 입수의 편의성 | 유료 도서 위주 | 공개 논문 및 자료 많음 |
질의를 위한 공개 커뮤니티 | NA | 매우 활발 |
3. R의 특징
- 오픈소스 프로그램
- 뛰어난 그래픽 및 성능
- 시스템 데이터 저장 방식
- 모든 운영체제에서 사용 가능(윈도우, 맥, 리눅스)
- 표준 플랫폼(S 언어 기반)
- 객체 지향 언어이면서 함수형 언어
[R 기초]
1. 편리한 기능
- R의 작업환경 설정: R단축아이콘 우측클릭 -> 속성 -> 바로가기 -> 시작위치에 현재 작업위치를 입력 -> 저장
- 프로그램에서 작업환경 설정: setwd("작업디렉토리")
- 도움말: help(함수), ?함수, RSite Search("함수명")
- 히스토리: history(), savehistory(file="파일명"), loadhistory(file="파일명")
- 콘솔 청소: Ctrl+L
2. 스크립트 사용하기
- 한줄 실행: Ctrl+R
- 여러줄 실행: 드래그 후 Ctrl+R
- 주석처리: #
3. 패키지
- 패키지: R 함수, 데이터 및 컴파일 코드의 모임
- 자동설치: install.packages("패키지명")
- 수동설치: install.packages("패키지명", "패키지 위치")
4. 배치 실행
- 매일 실행되어야 하는 프로그램을 시스템에서 프로세스에서 자동으로 구동하는 작업
- 배치파일 실행 명령: 윈도우 창에서 batch.R 실행파일이 있는 위치에서 R CMD BATCH batch.R
- Path 지정: 내컴퓨토에 오른쪽 마우스 클릭 -> 속성 -> 고급시스템 설정 -> 환경변수 클릭 -> 변수명이 path 클릭 -> R프로그램의 실행파일의 위치 찾아서 추가 -> 저장
5. 변수 다루기
- R에서는 변수명만 선언하고 값을 할당하면 자료형태를 스스로 인식하고 선언
- 화면에 프린트하고자 할 때 print()를 사용해도되비만, 변수 값만 표현해도 내용 출력
- 변수에 값을 할당할 때는 대입연산자(<-,<<-,=,->,->>) 사용 가능하나 <- 추천
- 메모리에 불필요한 번수가 있는지 확인하기 위해서는 ls()를, 삭제는 rm() 활용
6. 기본적인 통계량 계산: mean(), median(), sd(), var(), cov(), cor()
7. 함수의 생성 및 활용
- R은 함수형 언어이기 떄문에 프로그래머가 직접 활용 가능한 함수를 생성하여 활용 가능
- 함수는 function(매개변수1, 매개변수2,...) 선언하고 표현식이 2줄 이상인 경우 {}로 묶어서 함수 범위 설정
- 표현식은 변수 할당, 조건문(if문)과 반복문(for문, while문, repeat문), 전달값(return)으로 구성
[입력과 출력]
1. 데이터 입력과출력
- R에서는 텍스트 데이터 분만 아니라 데이터베이스와 다양한 통계프로그램에서 작성된 데이터를 불러들여서 적절한 데이터 분석 수행 가능
- 부동소수점 표현시 7자리 수를 기본으로 셋팅되어 있으며, option()함수, digit="숫자"를 지정해서 자릿수 변경
- 문자열을 파일로 저장하고자 할 때 : cat("저장할 문자열", file="파일명")
- 역슬래쉬(\) 인식 못하므로 슬래쉬(/) 또는 이중 역슬래쉬(\\)로 파일 경로 지정
2. 외부 파일 입력과 출력
- 고정자리 변수 파일 : read.fwf("파일명", width=c(w1, w2, ...))
- 구분자 변수 파일 : read.table("파일명", sep="구분자")
- csv 파일 읽기 : read.csv("파일명", header=T) # 1행이 변수인 경우: header=T
- csv 파일 출력 : write.csv(데이터프레임, "파일명")
3. 웹페이지에서 데이터 읽어오기
- 파일 다운로드 : read.csv(http://www.example.com/download/data.csv)
- ftp에서 파일 다운로드 : read.csv(ftp://ftp.example.com/download/data.csv)
- html에서 테이블 : readHTMLTable("url")
[데이터 구조와 데이터 프레임]
1. 벡터 Vector
- 벡터들은 동질적
- 위치로 인덱스
- 인덱스를 통해 여러 개의 원소로 구성된 하위 벡터 반환 가능
- 원소들에 이름 부여
2. 리스트 Lists
- 리스트는 이질적
- 위치로 인덱스
- 하위리스트 추출 가능
- 원소들에 이름 부여
3. 데이터프레임 Data frames
- 강력하고 유연한 구조로 SAS의 데이터셋 모방
- 데이터프레임의 리스트의 원소는 벡터 또는 요인
- 각각의 열에 대해 문자형 수치형 자동적 구분
- 벡터와 요인은 데이터프레임의 열이고 동일한 길이
- 메모리상에서 구동
4. 그 밖의 데이터 구조들 : 단일값 Scalars, 행렬 Matrix, 배열 Arrays, 요인 Factors
<데이터 구조 변경>
벡터 -> 리스트 | as.list(vec) | 행렬 -> 벡터 | as.vector(mat) |
벡터 -> 행렬 | 1열짜리 행렬: cbind(vec) 또는 as.matrix(vec) 1행짜리 행렬: rbind(vec) n x m 행렬: matrix(vec, n, m) |
행렬 -> 리스트 | as.list(mat) |
벡터 -> 데이터프레임 | 1열짜리 데이터프레임: as.dataframe(vec) 1행짜리 데이터프레임: as.dataframe(rbind(vec)) |
행렬 -> 데이터프레임 | as.dataframe(mat) |
리스트 -> 벡터 | unlist(lst) | 데이터프레임 -> 벡터 | 1열짜리 데이터프레임: dfm[[1]] or dfm[,1] 1행짜리 데이터프레임: dfm[1] |
리스트 -> 행렬 | 1열짜리 행렬: as.matrix(lst) 1행짜리 행렬: as.matrix(rbind(lst)) n x m 행렬: matrix(lst, n, m) |
데이터프레임 -> 리스트 | as.list(dfm) |
리스트 -> 데이터프레임 | 목록 원소들이 데이터의 열이면: as.data.frame(lst) 리스트 원소들이 데이터의 행이면: rbind(obs[[1]], obs[[2]]) |
데이터프레임 -> 행렬 | as.matrix(dfm) |
[데이터 변형]
- 벡터: split(vec, fac) - 벡터값과 펙터값의 길이가 같아야 함
- 데이터프레임: split(dfm, fac)
2. 함수 적용하기
- 벡터 : 행렬 : apply(mtr, 1, func), apply(mtr, 2, func)
- 리스트 : lapply(lst, func), sapply(lst, func)
- 데이터프레임: lapply(dfm, func), sapply(dfm, func), apply(dfm, 1or2, func)
3. 집단별로 함수 적용하기
- tapply(vec, fac, func)
- by(dfm, fac, func)
4. 병렬 벡터들과 리스트들에 함수 적용하기
- 벡터: mapply(func, vec1, vec2, vec3, ...)
- 리스트: mappply(func, lst1, lst2, lst3, ...)
5. 문자열 다루기
- 문자열 길이: nchar("문자열")
- 벡터의 길이: length(vec)
- 문자열 연결하기: paste("단어", "문장", scalar)
- 하위 문자열 추출하기: substr("문자열", 시작번호, 끝번호)
- 구분자로 문자열 추출하기: strsplit("문자열", 구분자)
- 문자열 대체하기: sub("대상문자열", "변경문자열", s), gsub("대상문자열", "변경문자열", s)
6. 날짜 다루기
- 문자열 -> 날짜: as.Date("2014-12-25"), as.Date("12/25/2014", format="%m/%d/%Y")
- 날짜 -> 문자열: format(Sys.Date(), format="%/m%/d%Y")
- format 인자값
- %b: 축약된 월 이름 ("Dec")
- %B: 전체 월 이름 ("December")
- %d: 두 자리 숫자로 된 일 ("31")
- %m: 두 자리 숫자로 된 월 ("11")
- %y: 두 자리 숫자로 된 년 ("20")
- %Y: 네 자리 숫자로 된 년 ("2020")
'STATISTICS > ADsP' 카테고리의 다른 글
3-4. 통계분석 (0) | 2020.08.27 |
---|---|
3-3. 데이터 마트 (0) | 2020.08.25 |
3-1. 데이터 분석 기법의 이해 (0) | 2020.08.22 |
2-2. 분석 마스터 플랜 (0) | 2020.08.22 |
2-1. 데이터 분석 기획의 이해 (0) | 2020.08.20 |