본문 바로가기
R

[R] 데이터프레임(DataFrame) 생성, 변수 추가, 결합 및 인덱싱

by JKyun 2017. 2. 7.

안녕하세요. 우주신 입니다.

 

블로그를 시작한지 아직 한달도 안 됐지만 몇몇분들이 방문해주시니 너무 신기하고 감사하네요!!

 

새삼 21세기 정보화 사회에 살고 있구나 깨닫고 인터넷의 위엄을 느끼기도 합니다.

 

공부하는 데 조금이라도 도움이 되기를 바라는 마음으로 오늘은 데이터프레임에 대해 정리해보겠습니다.

 

데이터프레임(DataFrame)은 R에서 가장 많이 쓰이는 데이터 구조라 정말 중요합니다!

 

다른 데이터구조와는 달리 데이터 유형에 국한받지 않고 2차원 형태의 데이터 구조를 생성할 수 있기 때문이죠. 

 

 

 

 

 

1. 데이터프레임(DataFrame) 생성

 

 

우선, xNum, xLog, xChar 변수들을 가지고 df 라는 데이터프레임을 생성했습니다. 

데이터프레임을 만들 땐, data.frame( ) 함수를 사용하면 되는 것으로 배웠죠?

 

str( ) 함수를 통해 데이터프레임의 구조를 확인해보면, xChar 변수는 Factor(범주형)로 입력되어 있습니다.

이를 통해 data.frame( ) 함수 사용시, 문자형은 자동으로 Factor로 인식을 하는 것을 알 수 있습니다.

이 때는 data.frame( , stringsAsFactors = FALSE)을 넣음으로써 문자형을 Factor가 아닌 Character로 입력할 수 있습니다.

stringsAsFactors = F 로 나타내기도 합니다.

 

 

2. 데이터프레임(DataFrame) 변수 추가

 

데이터프레임을 사용하다보면 종종 변수를 추가할 때가 많습니다.

먼저, 밑과 같이 dataframe$variable 를 통해 변수를 추가하는 방법이 있습니다.

기존 df에 Name이라는 새로운 변수를 4번째 열에 추가한 결과입니다. 간단하죠?

 

두번째 방법은 transform(dataframe, variable = ' ') 함수입니다. 

df에 새로운 변수 Age를 그 다음 열에 추가한 결과 입니다. 

transform( )함수가 첫번째 방법보다 깔끔하고 여러개의 변수도 한번에 생성할 수 있다는 점에서 이를 선호합니다.

 

 

3. 데이터프레임(DataFrame) 결합 

 

데이터프레임 결합은 앞시간에 행렬 결합에서 배웠던 rbind( ), cbind( ) 함수를 이용하면 됩니다.

df1의 아래에 df2를 결합해기 위해 rbind( )함수를 사용했습니다.

행렬(Matrix)와 마찬가지로 열의 개수가 같아야 오류가 안 뜹니다.

위 df3를 보면 깔끔하게 결합되었죠?

 

다음으로는 cbind( )함수를 사용하기 위해 df4 데이터프레임을 생성했습니다.

df5를 보면 오른쪽에 결합된 것을 확인할 수 있습니다.

참고로, df3와 df4의 위치를 바꿔주면 그 순서대로 결합되는 것을 확인할 수 있습니다.

 

마지막으로 merge( )함수를 사용해보겠습니다.

우선, df5에 df6를 cbind( )함수를 통해 추가해보았지만 행(row)의 개수가 달라 오류가 뜹니다.

 

merge(dataframe, dataframe, key = ' ') 함수는 데이터프레임의 변수 개수와 상관없이 key를 통해 유연하게 결합할 수 있습니다.

df5와 df6를 name 변수를 기준으로 Student라는 새로운 데이터프레임을 생성한 결과입니다.

df5의 name에 E가 없기에 이는 생략된 것을 확인할 수 있습니다.

 

 

4. 데이터프레임(DataFrame) 인덱싱

 

데이터프레임 Student의 변수 height를 구하는 방법에는 3가지가 있습니다.

-Student[ ,2], Student[[2]], Student$height

모두 동일한 방법이지만 개인적으로는 Student$height와 같이 명확히 변수이름을 써주는 것을 추천합니다.

 

-Student[ ,-1]: Student에서 1번째 행을 제외한 전체 구성요소를 가리켜라.

-Student[1:2, ]: Student에서 1번째부터 2번째 행에 있는 구성요소를 가리켜라.

-Student[Student$height > 11, ]: Student에서 Student$height가 11보다 큰 행에 있는 구성요소를 가리켜라.

 

 

 

 

끝.

 

다음 시간에는 데이터프레임 변수명 변경, 변수 선택 및 정렬에 대해 배워보겠습니다.

 

수고하셨습니다. 

 

 

 

 

 

댓글