반응형
PART04.2장 R 프로그래밍 기초
R이란?
- 통계, 데이터 마이닝 언어
- 각 세션 사이마다 시스템에 데이터 셋 저장, 매번 데이터를 로딩할 필요가 없고 명령어 스토리도 저장 가능
- 객체지향 언어이며 함수형 언어
- R스튜디오
- 래틀은 GUI 가 패키지가 긴밀한 결합, 정해진 기능만 사용 가능해 업그레이드가 제대로 되지 않으면 통합성에 문제
R설치
1. R install 먼저
The Comprehensive R Archive Network
cran.rstudio.com
2. RStudio 설치
https://www.rstudio.com/products/rstudio/download/
Download the RStudio IDE
RStudio is a set of integrated tools designed to help you be more productive with R. It includes a console, syntax-highlighting editor that supports direct code execution, and a variety of robust tools for plotting, viewing history, debugging and managing
www.rstudio.com
R 기초-1
- 패키지
- R함수와 데이터 및 컴파일된 코드의 모임, 라이브러리 집합
- 패키지 Load
- 하드디스크에서 직접
- 웹에서 설치
- install.packages("패키지명") - 도움말
- library(help=package명)
- help(package=package명)
- 라이브러리 로드
- library(package명)
- 프로그램 파일 실행
- 프로그래밍된 파일 실행 : source("파일명")
- 프로그램 파일
- sink(file, append, split)
- file : 출력 파일명
- append : 추가 여부
- split : 출력 파일에만 출력하거나 콘솔 창에 출력 - pdf() : 그래픽 출력을 pdf로 지정
- dev.off()로 파일 닫기
- sink(file, append, split)
- 배치 모드 기능
- 배치모드 : 사용자와 인터액션이 필요하지 않은 방식, 프로세스 자동화에 유용
- 배치파일 실행 명령
- $R CMD BATCH batch.R(윈도우 CMD)
- Path 지정 : 속성 -> 고급 시스템 설정-> 환경변수 클릭 -> 변수명 Path -> R 실행파일 위치 추가
- 장점
- 오픈소스로 최신 알고리즘 활용이 쉬움
- 함수형 언어이기에 자동화 가능
- 무료
- 단점
- 오픈소스라 신속한 유지보수는 어려움
- 문제를 해결할 때 많은 노력 필요
- 오픈소스라 신속한 유지보수는 어려움
R 기초-2
▶ 기초
기능 | R코드 | 비고 |
출력하기 | - print() : 출력형식 지정할 필요 없음 한번에 하나의 객체만 출력 - cat() : 여러항목을 묶어서 출력 복합적 데이터 구조 처리 불가 |
|
대입연산자 | <-, <<-, =, -> | |
변수 목록보기 | ls(), ls.str() | |
변수 삭제 | rm() | rm(list=ls()) 모든변수 삭제 |
벡터 생성 | c() | 원소 중 하나라도 문자가 있으면 모든 원소는 문자형태 |
R함수 정의 | function(매개변수..){expr~} | <expr> 지역변수 : 해당 스콥에만 존재 조건부 실행 : if 반복실행 : for, while, repeat 전역변수 : <<- 로 설정은 가능, 비추 |
용어 | Inf : 무한대 NaN : Not a Number dim : 행렬의 차원 NA : 결측치 |
"+"(2,3) # 더하기 기능을 하네
[1] 5
"+"(2,3,4) # 2개만 됨
Error in `+`(2, 3, 4) : operator needs one or two arguments
▶ R프로그램 소개
기능 | R코드 | 비고 |
데이터 할당 | a<-1 , a=1 | |
결합 | x <- c(1,2,3,4) | 문자, 숫자, 논리값, 변수 결합 가능 벡터와 데이터 셋 생성 |
수열 | 1:5 9:-2 seq(from=0, to=20, by=2) seq(from=0, to=20, length.out=5) |
시작값에서 최종값까지 연속된 숫자 생성 by로 간격 length.out을 결과값 길이 설정 |
반복 | rep(1, time=5) rep(1:4, each=2) rep(c, each=2) |
time 인자에 지정한 횟수만큼 반복 time 은 전체를 time 횟수만큼 반복 each는 각각 each 횟수만큼 반복 |
문자 붙이기 | A <- paste("a","b","c", sep="-") paste(A, c("e","f") paste(A, 0, sep="") |
sep 연결 구분자 지정 |
벡터 원소 선택 | V[n]: 선택 V[-n]:제외 |
n은 원소 자릿수 V는 벡터 명 |
▶ 벡터의 연산
연산자 | 뜻 | 표현 방법 |
$ | 요소 뽑아내기, 슬롯 뽑아내기 | a$coef |
%any% | 특수연산자 | %/% : 나눗셈몫 %% : 나눗셈 나머지 %*% : 행렬 곱 |
& | 논리 and | TRUE&TRUE |
~ | 식(formula) | lm(log(brain)~log(body), data=Animals) |
> c(2,4,6,8)+c(1,3,5,7)
[1] 3 7 11 15
c(2,4,6,8)+c(1,3,5,7,9) # 더해지는 벡터의 인자수가 같아야 함.
[1] 3 7 11 15 11
Warning message:
In c(2, 4, 6, 8) + c(1, 3, 5, 7, 9) :
longer object length is not a multiple of shorter object length
>
▶ 벡터의 기초통계
기능 | R 코드 | 비고 |
평균 | mean | na.rm 은 결측치를 제외하는 옵션 |
중앙값 | median | |
표준편차 | sd | stdev 는 R 명령어가 아님 |
분산 | var | |
공분산 | cov | |
상관계수 | cor |
x<-c(1,2,3,NA)
> x
[1] 1 2 3 NA
> mean(x)
[1] NA
> mean(x, na.rm=T)
[1] 2
###### NA가 있는 경우 결측지 제거 옵션을 사용하지 않고서는 NA 결과가 나옴
▶ R에서 자주 하는 실수
기능 | R 코드 | 비고 |
윈도우 경로 | \(역슬래시)를 두번 쓰거나, /(슬러시를 한번 써야함) | |
여러줄을 넘어서 식을 이어갈때 | > sum <- 1+2+3 > +4+5 [1] 9 >sum [1] 6 |
|
1:(n+1), 1:n+1 | > n<-5; > 1:n+1; [1] 6 7 8 9 10 > 1:(n+1) [1] 1 2 3 4 5 6 |
|
패키지를 불러오고 library()나 require()를 수행할 것 | ||
2번 써야할 것과 1번 써야할 것을 혼돈하지 말것 | aList[[a]] vs aList[a] && vs &, || vs | |
입력과 출력
- 데이터 핸들링 : 입력된 데이터를 다양한 전처리 작업을 거쳐 분석이 가능한 형태로 재정리
기능 | R 코드 | 비고 |
출력할 내용의 자리수 정의 | R의 부동소수점 표현 : 7자리로 표시 print(pi, digits=num) cat(format(pi, digits=num), "\n") options(digits=num) |
|
고정자리수 데이터 파일 읽기 | read.fwf("파일이름", widths=c(w1, w2, ..) | |
테이블로 된 데이터 파일 읽기 | read.table("파일이름", sep="구분자") | 1. 텍스트 데이터 옵션 ▶ stringsAsFactor=F 2. 결측치 표현 옵션 ▶ na.strings= "." 3. 헤더 표시 옵션 ▶ header=T |
CSV 데이터 읽기 | read.csv("파일명") | 1. 헤더 표시 옵션 ▶ header=T 2. 텍스트 데이터 옵션 ▶ as.is=T |
CSV 데이터 쓰기 | write.csv(변수, "파일명") | 1. 헤더 표시 옵션 ▶ col.names=T/F 2. 행번호 옵션 ▶ row.names=T/F |
혼합 | lines <- readLines("test.txt", n=num) token <- scan("test.txt", what=list(v1=character(0), v2=numeric(0), n=num, nlines=num) |
what=numeric(0) : 숫자로 인식 integer(0) : 정수 complex(0) : 복소수 character(0) : 문자 logical(0) : 논리 |
데이터 구조
- 벡터와 리스트
- 벡터 : 모든 원소는 같은 자료형
- V[c(1,2)] : V벡터의 1번째, 2번째 원소로 구성된 벡터
- V[2] : V벡터의 2번째 원소
- 이름 지정 가능 : names(V) <- c("A", "B", "C")
- 리스트 : 여러 자료형의 원소
- L[[2]] : L리스트의 2번째 원소
- L[c(1, 2)] : L리스트의 1, 2번째 원소를 갖는 리스트
- L[["A"]], L$A : A라는 이름을 같은 원소 지칭
- 벡터 : 모든 원소는 같은 자료형
- 데이터 프레임
- 데이터 프레임의 리스트 원소는 벡터 또는 factor
- 각 열 별 다른 데이터 형식
- 그 외
- 스칼라(단일 값) : 원소가 하나인 벡터로 인식 ( eg. pi , length(pi)는 1)
- 행렬 : 차원을 같은 벡터
- 배열 : 행렬에 n차원까지 확장된 형태(벡터에 차원 부여)
- 요인(Factor) : 벡터처럼 생겼지만, 고윳값의 정보를 얻어냄, 이 값들을 요인의 수준, 범주형 변수, 집단 분류
728x90
'데이터분석 > ADP' 카테고리의 다른 글
PART04.2장 R 프로그래밍 기초(그래픽기능) (0) | 2022.06.03 |
---|---|
PART04.2장 R 프로그래밍 기초(자료구조) (0) | 2022.06.03 |
PART04.1장 데이터 분석 개요 (0) | 2022.06.03 |
PART03.기타 (0) | 2022.06.03 |
PART03.2장 분석 마스터 플랜(분석 거버넌스 체계 수립) (0) | 2022.06.03 |
댓글