[Author]

@ JungHwan Yun
@ Master Student in Data-Science
@ Seoul National University of Science & Technology(SeoulTech)
@ E-mail : junghwan.yun@seoultech.ac.kr



[Contents]

@ Topic : CRM : 데이터 마이닝 실습 : PART1
@ Class : Customer Relationship Management
@ Version : 2.0
@ Version date : 2017-05-11
@ Summary : R언어의 기초적인 문법을 다룹니다.




1. 기본 자료형


Numeric : 숫자형

  • 자료형의 크기에 상관없이 사용가능
a <- 3
class(a)
## [1] "numeric"

Character : 문자형

  • “” 혹은 ’’ 둘다 인식 하니 편한대로 사용가능 (같은 자료형으로 인식함)
  • 문자는 길이가 1인 문자열로 인식하기 때문에 자료형의 크기에 상관없이 사용가능
b <- 'CRM'
class(b)
## [1] "character"

Boolean : 참/거짓

  • TRUE / FALSE를 나타내는 자료형.
c <- TRUE
class(C)
## [1] "function"

NULL / NA (참고)

  • NULL의 경우는 특정 데이터 셋 자체가 비어있음을 의미
  • NA의 경우는 데이터 셋의 내부 결측치를 의미
  • R에서 데이터 처리 간 주로 보게 되는 것은 NA 일 것임

2. 기본 데이터 구조

Vector : 벡터

  • 한종류의 원소들의 모음, 1차원
  • c()를 사용해서 생성
  • (참고) 다른 자료형이라고 하더라도 하나의 벡터안에 넣을 수 있지만 쓰지 말것!
(x <- c(1,3,4,5,4,3,2,7))
## [1] 1 3 4 5 4 3 2 7
(y <- c("kim", "seo", "park", "choi", "yun", "lee", "lim", "woo"))
## [1] "kim"  "seo"  "park" "choi" "yun"  "lee"  "lim"  "woo"
(z <- c(T, T,T,F,F,TRUE,FALSE,TRUE))
## [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE


Factor : 범주

  • 범주형 데이터 구조
  • 벡터와 유사하지만, 벡터안의 원소들에 대한 정보도 함께 가지고 있음
  • 명목형과 순서형의 자료들인 경우 사용
z <- c("kim", "seo", "park", "choi", "yun", "kim", "park", "kim")
(z <- factor(z))
## [1] kim  seo  park choi yun  kim  park kim 
## Levels: choi kim park seo yun


  • default는 알파벳 순서, 사용자가 설정가능
(z2 <- factor(z, order = TRUE, level = c("kim", "park", "seo", "choi", 'yun')))
## [1] kim  seo  park choi yun  kim  park kim 
## Levels: kim < park < seo < choi < yun


Matrix : 행렬

  • 벡터들의 집합 , 2차원
  • matrix(x:y,nrow = z) : x부터 y까지의 z행짜리 행렬을 만들어라
  • ex1) 1~12까지의 4행짜리 행렬을 만들어라
(m <- matrix(1:12, nrow = 4))
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12


  • ex2) 1~12까지의 4행짜리 행렬을 만들어라, 단 숫자의 삽입은 행단위로
(m <- matrix(1:12, nrow = 4,byrow = TRUE))
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
## [4,]   10   11   12

Array : 배열

  • 행렬들의 집합체, 2차원 이상
  • 구조화된 행렬속에 행력을 집어넣는개념
  • ex1) 1~24까지의 숫자를 2x3 행렬로해서 4층짜리의 데이터 구조를 만들어라
(a1 <- array(1:24 , c(2,3,4)))
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]    7    9   11
## [2,]    8   10   12
## 
## , , 3
## 
##      [,1] [,2] [,3]
## [1,]   13   15   17
## [2,]   14   16   18
## 
## , , 4
## 
##      [,1] [,2] [,3]
## [1,]   19   21   23
## [2,]   20   22   24
  • ex2) 1~24까지의 숫자를 2x3 행렬로해서 2x2 데이터 구조를 만들어라
(a2 <- array(1:24 , c(2,3,2,2)))
## , , 1, 1
## 
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
## 
## , , 2, 1
## 
##      [,1] [,2] [,3]
## [1,]    7    9   11
## [2,]    8   10   12
## 
## , , 1, 2
## 
##      [,1] [,2] [,3]
## [1,]   13   15   17
## [2,]   14   16   18
## 
## , , 2, 2
## 
##      [,1] [,2] [,3]
## [1,]   19   21   23
## [2,]   20   22   24


(중요) Dataframe : 데이터프레임

  • 데이터 유형에 상관없는 2차원 형태의 데이터 구조
  • 우리가 사용하는 엑셀을 생각하면 됨
d <- data.frame(NAME=c('YUN','GEUM','MOON','KANG','KIM'), 
                 MATH=c(2,4,6,8,10),
                 ENGLISH=c(3,6,9,12,15),
                 KOREAN=c(4,8,12,16,20))
print(d)
##   NAME MATH ENGLISH KOREAN
## 1  YUN    2       3      4
## 2 GEUM    4       6      8
## 3 MOON    6       9     12
## 4 KANG    8      12     16
## 5  KIM   10      15     20


List : 리스트

  • 서로 다른 구조의 데이터를 모두 묶은 객체
  • 주로 데이터 셋에서 추출을 하는 경우 많이 사용
  • Vector(L1), Matrix(L2), Array(L3), Data Frame(L4)를 만들어서, 하나의 List(L5)로 묶어라
L1 <- c(1, 2, 3, 4) 
L2 <- matrix(1:6, 3, byrow=TRUE) 
L3 <- array(1:24, c(3,4,2)) 
L4 <- data.frame(cust_id = c(1, 2, 3, 4), last_name = c("Kim", "Lee", "Choi", "Park")) 
L5 <- list(L1, L2, L3, L4) 
print(L5)
## [[1]]
## [1] 1 2 3 4
## 
## [[2]]
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
## 
## [[3]]
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24
## 
## 
## [[4]]
##   cust_id last_name
## 1       1       Kim
## 2       2       Lee
## 3       3      Choi
## 4       4      Park

3. Summary

-데이터 구조