만약 이미 정의된 데이터 프레임에서 컬럼 이름 colname에 데이터 y를 저장하고자 한다면 d$colname <- y 문법을 사용한다. 다음은 x 컬럼의 값을 1, 2, 3, 4, 5에서 6, 7, 8, 9, 10으로 바꾸는 예다.

    > d <- data.frame(x=c(1, 2, 3, 4, 5),
    +                  y=c(2, 4, 6, 8, 10),
    +                  z=c('M', 'F', 'M', 'F', 'M'))
    > d$x
    [1] 1 2 3 4 5
    > d$x <- 6:10
    > d
       x  y  z
    1  6  2  M
    2  7  4  F
    3  8  6  M
    4  9  8  F
    5 10 10  M
    

    위의 데이터 프레임 d에 기존에 없던 컬럼 w를 추가하고자 할 때도 같은 문법을 사용한다.

    > d$w <- c("A", "B", "C", "D", "E")
    > d
       x  y  z  w
    1  6  2  M  A
    2  7  4  F  B
    3  8  6  M  C
    4  9  8  F  D
    5 10 10  M  E
    

    한 가지 특이할 만한 점은 w 컬럼에 저장한 데이터가 벡터므로 d$w의 데이터 타입 역시 chr(문자열 벡터)이라는 점이다. 이는 data.frame( )에 문자열 벡터를 지정할 때 stringsAsFactor를 지정하지 않으면 문자열이 팩터로 바뀌는 것과는 다른 점이다.

    > str(d)
    'data.frame': 5 obs. of 4 variables:
    $ x: int 6 7 8 9 10
    $ y: num 2 4 6 8 10
    $ z: Factor w/ 2 levels "F","M": 2 1 2 1 2
    $ w: chr "A" "B" "C" "D" ...
    

    데이터 프레임의 행 이름, 컬럼 이름은 각각 rownames( ), colnames( ) 함수로 지정할 수 있다.

    > (x <- data.frame(1:3))
      X1.3
    1    1
    2    2
    3    3
    > colnames(x) <- c('val')
    > x
      val
    1 1
    2 2
    3 3
    > rownames(x) <- c('a', 'b', 'c')
    > x
      val
    a 1
    b 2
    c 3
    

    또는 names( )를 사용해도 colnames( )와 같은 결과를 얻는다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.