3 분 소요

image


R 기본 객체와 자료 형태 (1)


5가지 기본 객체

  • Character (문자형)
  • Numeric (real numbers) (숫자형, 실수형)
  • Integer (정수형)
  • Complex (복소수형)
  • Logical (True/False) (논리형)


R에서의 자료 형태

  • Vector (벡터)
  • Matrix (메트릭스 = 행렬)
  • List (리스트)
  • Factor (범주형)
  • Data Frame (데이터 프레임)


리스트 (List)


리스트 (Lists) 생성하기

  • 다른 객체들로 구성된 특별한 형태의 벡터
  • 리스트 생성하기
    x <- list(1, "a", TRUE, 1 + 4i)
## [[1]]
## [1] 1

## [[2]]
## [1] "a"

## [[3]]
## [1] TRUE

## [[4]]
## [1] 1+4i


실습 - 리스트 (Lists)

  • 리스트를 생성하기
    Hong <- list(kor.name="홍길동",
                 eng.name="Gil-dong",
                 age=43,
                 married=T,
                 no.child=2,
                 child.ages=c(13, 10)
  • 객체의 자료구조를 요약해서 보여줌
    str(Hong)
## List of 6
##  $ kor.name  : chr "홍길동"
##  $ eng.name  : chr "Gil-Dong"
##  $ age       : num 43
##  $ married   : logi  TRUE
##  $ no.child  : num 2
##  $ child.ages: num [1:2] 13 10

image


실습 - 리스트 성분 인덱싱

  • 리스트 성분들을 추출하기
    Hong$age
## [1] 43

    Hong["age"]
## $age
## [1] 43

    Hong$child.age[2]
## [1] 10
  • 리스트의 각 성분에 접근하기
    Hong[[2]]
## [1] "Gil-dong"

    Hong[c(1,2)]
## $kor.name
## [1] "홍길동"

## $eng.name
## [1] "Gil-dong"

    Hong[[6]]
## [1] 13 10

    Hong[[6]][1]
## [1] 13

    Hong[[6]][2]
## [1] 10


실습 - 리스트 (Lists)

    x <- list(a = 1:10,
              beta = exp(-3:3),
              logic = c(TRUE,FALSE,FALSE,TRUE))
    x
## $a
## [1]  1  2  3  4  5  6  7  8  9 10
##
## $beta
## [1]  0.04978707  0.13533528  0.36787944  1.00000000  2.71828183  7.3890
## [7] 20.08553692
##
## $logic
## [1]  TRUE FALSE FALSE  TRUE
  • 각 성분에 대해 같은 함수를 반복적으로 적용한 값을 리턴하기
    lapply(x, mean)                       # x 의 각 성분의 평균값을 계산
## $a
## [1] 5.5
##
## $beta
## [1] 4.535125
##
## $logic
## [1] 0.5

    lapply(x, quantile, probs = (1:3)/4)  # x 의 각 성분의 사분위수를 계산
## $a
##  25%  50%  75%
## 3.25 5.50 7.75
##
## $beta
##       25%       50%       75%
## 0.2516074 1.0000000 5.0536690
##
## $logic
## 25% 50% 75%
## 0.0 0.5 1.0


범주형 데이터 (Factors)

  • 범주형 데이터를 표현하는 데이터 형태
    • Using factors with labels is better than using integers → “self-describing”
    • Having a variable that has values “Male” and “Female” is better than a variable that has values 1 and 2.
    • ex) 남/녀, 매우좋음/좋음/보통/나쁨/매우나쁨, 혈액형, 지역구 …
  • 범주형 데이터 생성하기
    x <- factor(c("yes", "yes", "no", "yes", "no"))
    x  ## Levels are put in alphabetical order
  • The order of the levels of a factor can be set using the levels argument to factor().
    x <- factor(c("yes", "yes", "no", "yes", "no"),
                levels = c("yes", "no"))
    x
  • table() 함수: 도수분포표를 작성해주는 함수
    blood.type <- factor(c("A", "A", "AB", "O", "O"), levels=c("A", "B", "AB", "O"))
    table(blood.type)
## blood.type
##  A  B AB  O
##  2  0  1  2


데이터 프레임 (Data Frame)

  • R 에서 사용하는 데이터 저장 방식 중 가장 널리 사용되는 방식
  • 표 형태로 되어 있는 데이터 형태
  • 같은 길이의 벡터들을 성분으로 갖는 리스트

  • 데이터 프레임 생성하기
    x <- data.frame(id = 1:4, name = c("Kim", "Lee", "Park", "Choi"))
    x
##   id name
## 1  1  Kim
## 2  2  Lee
## 3  3 Park
## 4  4 Choi


실습 - 데이터 프레임 (Data Frames)

  • 데이터 프레임 생성하기
    x <- c(100, 75, 80)
    y <- c("A302043", "A302044", "A302045")
    z <- data.frame(score=x, ID=y)

    dat.1 <- data.frame(x=1:3, y=c('a', 'b', 'c')
    str(dat.1)
## 'data.frame':    3 obs. of  2 variables:
##  $ x: int  1 2 3
##  $ y: Factor w/ 3 levels "a","b","c": 1 2 3

    dat.2 <- data.frame(x=1:3, y=c('a', 'b', 'c'), stringsAsFactors=F)
    str(dat.2)

## 'data.frame':    3 obs. of  2 variables:
##  $ x: int  1 2 3
##  $ y: chr  "a" "b" "c"
  • 여러 개의 데이터프레임을 행방향으로 붙여 새로운 데이터프레임 생성하기
    a <- data.frame(x=c(5, 10, 15), y=c("a", "b", "c"))
    b <- data.frame(z=c(10, 20, 30))
    cbind(a, b)
##    x y  z
## 1  5 a 10
## 2 10 b 20
## 3 15 c 30
  • 여러 개의 데이터프레임을 열방향으로 붙여 새로운 데이터프레임 생성하기
    a1 <- data.frame(x=c(20, 25, 30), y=c("d", "e", "f"))
    rbind(a, a1)
##    x y
## 1  5 a
## 2 10 b
## 3 15 c
## 4 20 d
## 5 25 e
## 6 30 f

댓글남기기