행위

R 기본

DB CAFE

목차

1 R명령어

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

  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()와 같이 입력값이 두 개 이상 필요하면 마침표(.)가 오퍼레이터의 왼쪽 값으로 입력



1.2 변수정의

1.2.1 rm()

- 변수 삭제

1.2.2 ls()

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

1.2.3 setwd()

- 작업파일 위치

1.2.4 getwd()

- 현재 설정된 파일위치

1.2.5 summary([데이터이름])

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

1.2.6 data()

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

1.2.7 str()

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

1.2.8 attach()

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

1.2.9 as.numeric()

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

1.2.10 detach()

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


1.3 예외 처리

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

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

1.4 파일읽기/쓰기

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

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

1.4.2 load("number.Rdata")

1.5 파일내용읽기

1.5.1 sink("output.txt")

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

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

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

1.7 테이블 형태로 읽기

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

1.8 CSV읽기

- read.csv("exeldata.csv")


1.9 데이터형

1.9.1 y[1,]

- 첫행 읽기

1.9.2 y[,1]

- 1열읽기

1.9.3 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에 할당

1.9.4 Factor

- factor()

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

1.9.5 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

1.9.6 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]

1.9.7 Array

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

1.9.8 List

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

1.10 반복처리

1.10.1 rep()

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

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

1.10.2 seq()

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

1.11 범위처리

1.11.1 mean()

- 평균

1.11.2 range

- 범위

1.11.3 sort

- sort(x,decreasing=TRUE)

1.11.4 length

- 길이

1.12 출력

1.12.1 cat()

- cat()

   - 텍스트 출력

1.12.2 print()

1.12.3 (괄호)

1.12.4 head()

1.12.5 tail()

1.12.6 View()

- 데이터를 보여주기



1.13 함수

1.13.1 선언

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

1.13.2 사용

- fnc_a()

1.13.3 함수저장

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

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

1.13.4 함수불러오기

- load("myfunction.Rdata"

   - ls()

1.14 조건문

1.14.1 runif(1)

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

1.14.2 if

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


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

1.14.3 switch

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

1.15 반복문

1.15.1 for

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

1.15.2 while

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

1.15.3 repeat

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

1.16 연산자

1.16.1 !

1.16.2 가감승제

- + - * /

1.16.3 비교

- == - !=

1.16.4 그리고

- &,&&

1.16.5 또는

- |,||

1.17 기호 =

1.17.1 [ i ]

- i번째 요소

1.17.2 [ ( i ) ]

- i번째 리스트

1.17.3 x $ a

- x에서 a컬럼

1.17.4 x $ "a"

- x에서 a컬럼

1.17.5 x[ i , j ]

- i행 , j열

1.18 문자열

1.18.1 grep()

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

1.18.2 nchar()

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

1.18.3 paste

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

1.18.4 substr

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

1.18.5 strsplit

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

1.19 정규식

1.19.1 \\d

1.19.2 \\s

1.19.3 \\w

1.19.4 \\t

1.19.5 +

- 1회이상

1.19.6 ?

- 0 이거나 1회

1.19.7 *

- 0회이상

1.19.8 { }

- 횟수 반복 - {i,j}

   - i ~ j회 반복

1.19.9 [:alnum:]

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

1.19.10 [:blank:]

- 공백

1.19.11 [:cntrl:]

- 제어문자

1.19.12 [:upper:]

- 대문자 - [:lower:]

   - 소문자