메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

R 기본

DB CAFE

R명령어

파이프 오퍼레이터 (%>%)

  1. 파이프 오퍼레이터는 R에서 동일한 데이터를 대상으로 연속으로 작업하게 해주는 오퍼레이터(연산자).
  2. %>%를 사용하면 함수 간의 관계를 매우 직관적으로 표현
일반함수 R 표현.방법
F(x) x %>% F
G(F(x)) x %>% F %>% G


  • 예제)
x = c(0.3078, 0.2577, 0.5523, 0.0564, 0.4685,
      0.4838, 0.8124, 0.3703, 0.5466, 0.1703)

1) 일반 언어에서 처리

x1 = log(x)
x2 = diff(x1)
x3 = exp(x2)
round(x3, 2)

2) R 파이프 오퍼레이터로 처리

x %>% log() %>% diff() %>% exp() %>% round(., 2)
  1. 맨 왼쪽에는 원하는 변수를 입력
  2. %>% 뒤에는 차례대로 계산하고자 하는 함수 입력
  3. 변수의 입력값을 ()로 비워둘 경우, 오퍼레이터의 왼쪽에 있는 값이 입력 변수
  4. 반면 round()와 같이 입력값이 두 개 이상 필요하면 마침표(.)가 오퍼레이터의 왼쪽 값으로 입력



변수정의

rm()

- 변수 삭제

ls()

- 현재 선언해서 사용중인 변수목록

setwd()

- 작업파일 위치

getwd()

- 현재 설정된 파일위치

summary([데이터이름])

- 최솟값,1/4값,중간값,평균,1/3값,최댓값의 써머리 출력

data()

- 데이터를 사용하겠다는 선언

str()

- 데이터 구성/자료형 보기

attach()

- 변수/데이터 를 메모리에 고정

as.numeric()

- 데이터를 숫자형으로 변환

detach()

- 메모리에 선언된 변수 해제


예외 처리

tryCatch() 함수로 예외처리 하고 넘어갈 수 있음

result = tryCatch({
  ..실행 코드..
}, warning = function(w) {
# 경고 발생시 
  warning-handler-code
}, error = function(e) {
# 에러 발생시 
  error-handler-code
}, finally = {
# 무조건 수행 , 생략 가능 
  cleanup-code
})

파일읽기/쓰기

save(x,file="number.Rdata")

- x변수값을 "number.Rdata"로 저장

load("number.Rdata")

파일내용읽기

sink("output.txt")

scan("파일이름",what="디렉토리")

설정된 디렉토리에서 파일읽기

read.table("output.txt",header=T)

테이블 형태로 읽기

read.table("testdata.txt", header=T)

CSV읽기

- read.csv("exeldata.csv")


데이터형

y[1,]

- 첫행 읽기

y[,1]

- 1열읽기

Vector

- v<- -5:5

   - -5 ~ 5사이값을 할당

- v<-c(-5,5)

   - -5,5를 할당

- v<-c(-5:5) - v<-seq(from=-5,to=5,by=1) - vector집합연산

   - union(x,y)
       - 합집합-중복제거
   - intersect
       - 차집합
   - setdiff(x,y)
       - x기준, y값을 빼준것
   - is.element(2,x)
       - 2가 x의 원소인지 검사
   - x<-c(sort(sample(1:99,9)))

- 문자형vector

   - unique(x)
   - match(x,c("A"))
       - x의 데이터가 A와 같은지검사하고  같으면 1을 출력,NA는같지않음
   - k<-paste(x[1],x[3])
       - 벡터x에서 첫번째,세번째 문자를 k에 할당
   - paste(x,collapse="%")
       - x를 구성하는 문자열을 %로 연결하기
   - paste(x,collapse=)
       - x를 구성하는 문자열을 공백없이 연결
   - substring(m,2:5)
       - m객체 문자열에서 2~끝,3~끝,4~끝,5~끝 을 출력
   - grep("Co",x)
       - x에서 "Co"로 시작하는 것을 찾는다.

- 논리형 vector

   - x<- runif(5)
       - 0,1 사이의 난수 다섯 개를 만들어 x에 할당
   - any(x>0.9)
       - x값이 조건에 맞는지 검사
   - all(x<0.9)
       - 모든x의 값들이 0.9보다 작은지 검사
   - is.vector(x)
   - is.factor(x)
       - 데이터형이 팩터인지 확인
   - x<-rnum(5)
       - 평균이 0인 정규분포하는 변수5개를 x에 할당

Factor

- factor()

   - 데이터를 팩터형으로 변환

Matrix

- 행렬

   - 2차원 동일형 데이터
   - 각 컬럼별 다른형 데이터 할당가능
   - rbind()
       - 벡터데이터를 모아서 열 데이터를 구성
       - rbind(array1,array2,array3)
   - cbind()
       - 행데이터 구성
       - cbind(array1,array2,array3)
   - apply()
       - 배열,행렬등에 함수를 적용한 결과를 벡터,배열,리스트로 변환
       - apply(x,1,max)
           - x데이터 1열의 최대값 
       - apply(x,1,sum)
       - apply(x,2,mean)
   - lapply()
       - 결과를 리스트로 반환
   - sapply()
       - 결과를 벡터,배열,행렬로 반환
       - sapply(리스트,sum)
   - tapply()
       - 데이터를 그룹핑한후 함수 적용
   - mapply()
       - sapply()확장
           - 여러개 벡터,리스트로인자를 받고 함수에 인자별 적용 결과를 반환
           - mapply(sum,리스트1,리스트2)
               - 리스트1+리스트2
   - colnames(x)
       - 컬럼 이름을 추가
   - rownames(x)
       - 로우 이름을 추가
   - colSums(x)
       - 컬럼의합
   - rowSums(x)
       - 로우의 합
   - matrix(x,nrow=3)
       - x데이터 열을 3으로 분리하여 행렬 구성
       - 데이터를 매트릭스형으로 만들기 함수
       - 매트릭스변수x * 3 은?
           - 매트릭스 전체에 2를 곱한다.
       - matrix(1:12,nrow=3,dimnames=list(c("R1","R2","R3"),c("C1","C2","C3","C4")))
   - colSums(x)
       - 행렬데이터x의 컬럼 합
   - rowSums(x)
       - 행렬데이터x의 로우 합
   - colMeans
   - rowMeans

Data Frame

- data.frame() - 예시

- 데이터만들기

no<- c(1,2,3,4)
name<- c("A","B","C","D")
ages<-c(52,53,54,55)
sex<-c("M","M","F","M")

- 데이터프레임으로 변환

Insa<-data.frame(No=no,Name=name,Age=ages,Sex=sex)

- 데이터처리

insa[1,]
Insa[,2:4]
Insa[,-3]

Array

- 행렬을 2차원으로 확장한것 - x<-array(1:24,dim=c(2,3,4))

List

- 키,값 형태 데이터 - listdata<- c("A",c(12,21,33))

반복처리

rep()

- rep(1:3,times=2,len=7) - rep(1:3,each=3)

   - 1을 3번,2를 3번,3을 3번 반복

seq()

- seq(from=1,to=12,by=0.5)

범위처리

mean()

- 평균

range

- 범위

sort

- sort(x,decreasing=TRUE)

length

- 길이

출력

cat()

- cat()

   - 텍스트 출력

print()

(괄호)

head()

tail()

View()

- 데이터를 보여주기



함수

선언

fnc_a <- function(){
    x<-10
    y<-20
    result<-x+y
    return(result)
}

사용

- fnc_a()

함수저장

- save(fnc_a,fnc_b,fnc_c,x,file="myfunction.Rdata")

   - 1개의 변수,3개의 함수를 Rdata파일에 같이 저장

함수불러오기

- load("myfunction.Rdata"

   - ls()

조건문

runif(1)

- 0~1사이 난수 1개 생성

if

-- 한줄 처리 
if(x>0) print(x)


if ( ) {   
  ....
       }
ifelse{ 
  ....
}else {
  ....
}

switch

switch(x[3], 
  "1" = print("one")
, "2" = print("one")
,  print("Error") 
)

반복문

for

for (i in 1:5) {
    for (j in 1:5) {
     ....
    }
}

while

 while (i <= 10){
        ....
}

repeat

repeat{
    ....
   if(...) break;
}

연산자

!

가감승제

- + - * /

비교

- == - !=

그리고

- &,&&

또는

- |,||

기호 =

[ i ]

- i번째 요소

[ ( i ) ]

- i번째 리스트

x $ a

- x에서 a컬럼

x $ "a"

- x에서 a컬럼

x[ i , j ]

- i행 , j열

문자열

grep()

- grep("정규식",x,value-TRUE) - x에서 정규식 문자 찾기

nchar()

- nchar(x) - 문자열 수를 센다

paste

- paste(x,y) - 두개 문자열 합치기

substr

- substr(x,6,8) - 6번째에서 8번째까지 추출

strsplit

- strsplit(x,split-",") - 콤마기준으로 나누기

정규식

\\d

\\s

\\w

\\t

+

- 1회이상

?

- 0 이거나 1회

*

- 0회이상

{ }

- 횟수 반복 - {i,j}

   - i ~ j회 반복

[:alnum:]

- 아파벳+숫자 - [:alpha:]

[:blank:]

- 공백

[:cntrl:]

- 제어문자

[:upper:]

- 대문자 - [:lower:]

   - 소문자
목차