자격증/ADsP
[개미의 걸음 ADsP 3과목] R 데이터의 구조 - ④Data Frame(데이터 프레임)
IT개미 데이터
2020. 7. 25. 17:17
728x90
데이터 프레임[data.frame()]
2차원 구조로 행렬처럼 행과 열로 구성된 형태로 강력하고 유연한 구조
-
행렬은 하나의 데이터 유형만을 가질 수 있지만 데이터 프레임은 여러가지 데이터 유형을 가짐
-
데이터 프레임에서 하나의 열은 벡터처럼 하나의 데이터 유형만 가짐
-
데이터 프레임의 리스트의 원소는 벡터 또는 요인
-
데이터 프레임에 들어갈 벡터의 길이는 동일해야 한다.
-
데이터 프레임은 표 형태의 데이터 구조이며, 각 열은 서로 다른 데이터 형식을 가질 수 있음
-
데이터 프레임은 엑셀의 데이터 시트와 같은 역할
-
텍스트, CSV, 엑셀, DB형태로 되어있는 외부데이터를 R로 불러오면 '데이터프레임'구조를 가짐
데이터 프레임은 강력하고 유연한 구조로 SAS의 데이터셋을 모방해서 만든 구조
- 엑셀의 시트와 비슷한 역할
- 엑셀 시트에서는 열에 대한 자료 형태를 각각 구분해 주어야하는 번거러움이 있다.
- sqldf를 이용할 때 RDBMS의 table 또는 엑셀의 피벗처럼 사용할 수 있는 테이블
- R의 데이터프레임에서는 각각의 열에 대해 문자형인지 수치형인지 자동으로 구분되어 편리
- 메모리상에서 구동
Argument | 설 명 |
... | 벡터나 행렬 지정 |
stringsAsFactors | 데이터 유형이 문자형인 경우, 데이터 프레임을 생성할 때 기본적으로 Factor로 변경 이것을 원하지 않는 경우, FALSE를 지정하면 문자형이 그대로 유지 |
※ str(DF1) : 지정된 데이터(DF1)가 어떠한 구조로 형성되어 있는지 알려주는 함수
※ stringsAsFactors를 지정하지 않아 문자형의 데이터 유형을 가진 "gender"가 자동으로 facfor로 변경되었음
gender는 두 개의 집단으로 인식된 범주형 자료가 됨
※ stringAsFactors를 FALSE로 지정할 경우 데이터 유형이 그대로 문자형으로 유지됨
※ DF1,DF2 모두 5행 4열의 2차원 구조를 갖는 데이터프레임
# NA가 있는 행 삭제
더보기
na.omit(데이터프레임명)
데이터 프레임의 속성
1. 행의 개수와 행의 이름
nrow( ) | 행의 개수를 알려주는 함수. [행렬에서만 사용가능] |
NROW( ) | 행의 개수를 알려주는 함수. [행렬과 벡터에서 사용가능] |
rownames( ) | 행의 이름을 알려주는 함수. 기본적으로 행의이름은 문자형 [1부터 시작] 행의 이름을 변경하고 싶을 때는 c( )함수나 paste( )함수 등을 사용 |
2. 열의 개수와 열의 이름
ncol( ) | 열의 개수를 알려주는 함수 [행렬에서만 사용가능] |
NCOL( ) | 열의 개수를 알려주는 함수 [행렬과 벡터에 사용가능] |
colnames( ) | 열의 이름을 알려주는 함수, 기본적으로 열의 이름은 문자형 열의 이름을 변경하고 싶을 때는 c()함수나 paste()함수 등을 사용 |
3. 차원 & 차원의 이름
dim( ) | 행의 개수와 열의 개수를 한번에 알려주는 함수 첫번째 나오는 숫자가 행의 개수, 두번째 나오는 숫자가 열의 개수를 의미함 |
dimnames( ) | 행의 이름과 열의 이름을 한번에 알려주는 함수 첫번째 나오는 이름이 행의 이름, 두번째로 나오는 이름이 열의 이름을 의미 차원의 이름은 리스트[list] 형태로 되어 있음 |
4. 데이터의 구조
str( ) | 지정된 데이터가 어떤 구조로 형성되었는지 알려주는 함수 데이터의 형태, 행의 개수, 열의 개수, 변수명, 데이터의 유형 등을 알려줌 데이터를 분석하기 전에 데이터가 어떤 구조로 이루어졌는지 확인하는 것이 중요 |
데이터 프레임 합치기
데이터 프레임 두 개 합치기 | rbind(df1,df2) | 열의 개수와 열 이름이 동일 |
cbind(df1,df2) | 행의 개수가 동일해야 함 | |
두 개의 데이터 프레임을 동일한 변수 기준으로 합치기 | merge(df1,df2, by="DF_name") | df1과 df2의 공통 열의 이름을 기준으로 데이터셋을 병합 |
728x90