데이터 입력은 데이터 분석을 위한 첫 단계입니다. 데이터 입력은 크게 두 가지 방법이 있는데, 하나는 직접 데이터 구조와 형식을 정의하고 입력하는 것이고 나머지 하나는 외부 데이터 파일을 R로 불러오는 것입니다. 외부에서 데이터를 불러올 경우 read.*() 함수를 사용하며, 확장자명에 따라 함수명과 일반 파라미터가 상이합니다. 

 

20.1. 데이터셋 불러오기, read.table()

더보기

(1) read.table() 함수의 구조와 파라미터

테이블이란 특정 데이터를 행과 열로 구조화한 표입니다. read.table() 함수는 csv, txt 등 데이터를 불러올 수 있으나 해당 확장자 양식에 맞게 여러 파라미터들을 재할당해야 하므로 확장자에 최적화된 함수를 사용하는 것이 좋습니다. 함수의 구조는 다음과 같습니다.

read.table(file, header, sep, quote, dec, numerals, row.names, col.names, as.is, ∙∙∙ )
 
파라미터 형태 설명
file   파일 경로 지정, 작업파일에 위치할 경우 "파일이름"으로 지정
header = FALSE   TRUE면 첫 행을 필드명으로 인식, FALSE면 첫 행을 필드명 미인식
sep = ""   구분자 지정, ""로 설정할 경우 공백으로 인식
quote = "\"'"   인용문 지정, 기본값은 "(double quotation marks)
dec = "."   소수점 인식을 위해 해당 파일에서 사용한 문자(기호) 설정
numerals=c("allow.loss", "warn.loss", "no.loss")   소수점 정밀도(precision) 변환 문제에 따른 설정 지정
row.names   행 이름을 사용할지 지정
col.names   열 이름을 사용할지 지정
na.strings = "NA"   결측값의 표기명 설정, 기본값으로 "NA" 지정됨
nrows = -1   몇 행까지 데이터를 불러올지 결정, 음수일경우 무시
skip = 0   1행부터 몇행까지 생략할지 결정
check.names = TRUE   TRUE면 열이름이 적합하지 않을 경우, make.name() 함수에 의거해 정정
fill = !blank.lines.skip   TRUE면 비어있는 원소(결손값)이 있을 경우 "NA"처리, FALSE면 오류 반환
strip.white = FALSE   TRUE면 값에 선행 후행에 있는 띄어쓰기를 삭제
blank.lines.skip = TRUE   TRUE면 비어있는 행이 있을 경우 생략, FALSE면 "NA" 처리
comment.char = "#"   주석기호 설정
stringsAsFactors = default.stringsAsFactors()   TRUE면 문자형 벡터를 팩터화, FALSE면 문자화
encoding = "unknown"   인코딩방법 선택, 일반적으로 "UTF-8"로 지정

 

(2) 예시

보통 대부분의 데이터셋은 csv형식이지만, 부득이하게 필드 구분을 ,로 하지 못할 경우 tsv 파일을 사용할 때가 있습니다. 그럴 때 read.table() 함수를 사용하는데, 예를 들어 학생 5명의 소득과 자산 현황을 기록한 tsv 파일을 불러오겠습니다. 예제 파일은 아래에 링크돼있습니다.

asset_status.tsv
0.00MB

해당 파일을 다운로드를 하고, 작업 폴더에 위치시킨 후 R로 데이터를 불러오는 코드는 다음과 같습니다.

asset_status <- read.table("asset_status.tsv", 
                           sep="\t", 
                           header=TRUE)

 환경창에서 결과를 확인하면 다음과 같이 데이터프레임 객체가 할당됐음을 확인할 수 있습니다.

 

20.2. csv 형식 데이터셋 불러오기, read.csv()

더보기

(1) read.csv() 함수의 구조와 파라미터

csv(comma-separated values) 파일이란 테이블(데이터셋)의 필드를 ,로 구분한 텍스트 파일입니다. csv 확장명을 사용하며 함수의 구조는 다음과 같습니다. 

read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, ∙∙∙ )
 

read.csv() 함수의 파라미터들은 read.table() 함수와 대부분 동일하나 기본값 설정이 다르므로 주의해야합니다. 주로 header, sep, stringsAsFactors, na.strings 파라미터를 사용해 데이터셋을 불러옵니다.

 

(2) 예시

예시를 위해 이전 포스트인 <9. 데이터 구조 파악하기>를 참고해 student_dataset을 csv파일로 정의하면 다음과 같습니다. 예제 파일은 아래에 링크되어 있습니다.

student_dataset.csv
0.00MB

해당 파일을 다운로드를 하고, 작업 폴더에 위치시킨 후(아니라면 경로를 지정한 뒤) R로 데이터를 불러오는 코드는 다음과 같습니다. 아래의 경우는 student_dataset 파일을 data 폴더에 위치시킨 경우의 코드입니다. 

student_df_01 <- read.csv(file="data/student_dataset.csv",
                          header=TRUE)

환경창에서 결과를 확인하면 다음과 같이 데이터프레임 객체가 할당됐음을 확인할 수 있습니다.

 

20.3. xlsx 형식 데이터셋 불러오기, read_xlsx()

더보기

(1) readxl 패키지 설치 및 활성화

excel의 확장자명인 .xls(x)파일을 불러올 때는 readxl 패키지를 사용합니다. readxl 패키지는 Other Packages에 속해있으므로 패키지를 설치하고 활성화해야합니다. 해당 코드는 다음과 같습니다.

install.packages("readxl")
library(readxl)

 

(2) read_xlsxcsv() 함수의 구조와 파라미터

xls(x)파일을 불러오기 위해선 read_xlsxcsv() 함수를 사용하며, 그 구조는 다음과 같습니다.

read_xlsx(path, sheet, range, col_names, col_types, na, trim_ws, skip, n_max, ∙∙∙ )
 
파라미터 형태 설명
path   파일 경로 지정
sheet = NULL   파일의 sheet 지정, sheet num이나 name 지정 가능
range = NULL   읽을 셀의 범위를 지정, 예를 들어 "B2:D57"로 지정 가능
col_names = TRUE   열 이름을 사용할지 결정 
na = ""   결측치로 처리할 문자열 지정, 기본값은 ""
skip = 0   1행부터 몇행까지 생략할지를 결정
n_max = Inf   몇 행까지 데이터를 불러올지 결정

 

(3) 예시

위에서 예시로 들었던 student_dataset.csv 파일을 student_dataset.xlsx 파일로 변환하여 불러오겠습니다. 예제 파일은 아래에 링크돼있습니다.

student_dataset.xlsx
0.01MB

해당 파일을 다운로드를 하고, 작업 폴더에 위치시킨 후(아니라면 경로를 지정한 뒤) R로 데이터를 불러오는 코드는 다음과 같습니다.

student_df_02 <- read_xlsx(path="data/student_dataset.xlsx",
                           sheet=1,
                           col_names=TRUE)

환경창에서 결과를 확인하면 다음과 같이 객체가 할당됐음을 확인할 수 있습니다.