데이터는 다양한 형식으로 존재할 수 있다. 각각의 형식에 대해 R은 특정의 함수와 인수를 갖는다. 이 튜토리얼은 R에 데이터를 불러오는 방법을 설명한다.
이 튜토리얼에서는 다음에 대하여 학습한다 :
가장 널리 사용되는 데이터 저장소 중 하나는 .csv
(comma separated values) 파일 형식이다. R은 시작 시 utils
패키지를 포함한 일련의 라이브러리를 적재한다. 이 패키지는 read.csv()
함수와 연결된 csv 파일을 열 수 있어 편리하다. read.csv()
의 표현법은 다음과 같다 :
xxxxxxxxxx
read.csv(file, header = TRUE, sep = ",")
Argument:
,
.
우리는 데이터 파일 이름 mtcats
를 읽을 것이다. csv 파일은 온라인에 저장된다. .csv 파일이 로컬에 저장되어 있으면 코드 내에 PATH
(경로)를 지정할 수 있다. ' '
안에 싸는 것을 잊지 말아라. PATH
(경로)는 문자열 값이어야 한다.
맥 사용자의 경우, 다운로드 폴더에 대한 PATH
(경로)는 다음과 같다 :
xxxxxxxxxx
"/Users/USERNAME/Downloads/FILENAME.csv"
윈도우즈 사용자의 경우 :
xxxxxxxxxx
"C:\Users\USERNAME\Downloads\FILENAME.csv"
항상 파일명과 확장자까지 지정해야 함을 주의하기 바란다.
xxxxxxxxxx
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <- read.csv(PATH, header = TRUE, sep = ',')
length(df)
결과 :
xxxxxxxxxx
## [1] 12
xxxxxxxxxx
class(df$X)
결과 :
xxxxxxxxxx
## [1] "factor"
R은 기본적으로 문자 값을 factor로 반환한다. stringsAsFactors = FALSE
를 추가하면 이 설정을 해제할 수 있다.
xxxxxxxxxx
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)
결과 :
xxxxxxxxxx
## [1] "character"
변수 x
의 클래스는 이제 '문자'이다.
엑셀 파일은 데이터 분석가들 사이에서 매우 인기가 있다. 스프레드시트는 작업하기 쉽고 유연하다. R에는 Excel 스프레드시트를 불러오기 위한 readxl
라이브러리가 장착되어 있다.
readxl
을 컴퓨터에 설치하려면 다음의 코드를 사용한다.
xxxxxxxxxx
require(readxl)
r-conda-equential
과 R을 함께 설치하면 라이브러리가 이미 설치된다. 명령 창에서 확인할 수 있다.
결과 :
xxxxxxxxxx
Loading required package: readxl.
패키지가 존재하지 않는 경우, 콘다 라이브러리와 함께 설치하거나, 또는 터미널에서 conda install -c mittner r-readxl
을 사용하라.
다음 명령을 사용하여 Excel 파일을 불러오려면 다음의 라이브러리를 사용해야 한다.
xxxxxxxxxx
library(readxl)
이 튜토리얼에서는 패키지의 readxl
에 포함된 예를 사용한다.
라이브러리에 있는 이용가능한 스프레드시트를 알려면 다음의 코드를 사용한다.
xxxxxxxxxx
readxl_example()
geometry.xls
스프레드시트의 위치를 확인하려면 단순히 다음과 같이 입력한다.
xxxxxxxxxx
readxl_example("geometry.xls")
conda와 함께 R을 설치하며, 스프레드시트는 Anaconda3/lib/R/library/readxl/extdata/filename.xls
에 위치한다.
read_excel()
함수는 xls 및 xlsx 확장자 파일에 있어 매우 유용하다.
표현법은 다음과 같다 :
xxxxxxxxxx
read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments :
readxl
라이브러리를 이용하여 스프레드쉬트를 블러올 수 있고, 첫 번째 시트의 열 수를 셀 수 있다.
xxxxxxxxxx
# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)
결과 :
xxxxxxxxxx
## [1] 5
The file datasets.xlsx is composed of 4 sheets. We can find out which sheets are available in the workbook by using excel_sheets() function
datasets.xlsx 파일은 4개의 시트로 구성되어 있다. excel_sheet() 함수를 사용하여 워크북에서 사용 가능한 시트를 확인할 수 있다.
xxxxxxxxxx
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
결과 :
xxxxxxxxxx
[1] "iris" "mtcars" "chickwts" "quakes"
하나의 워크시트에 많은 시트가 포함되어 있는 경우, 시트 인수를 사용하여 특정 시트를 쉽게 선택할 수 있다. 우리는 시트의 이름이나 시트의 색인을 지정할 수 있다. 두 함수가 같은 결과를 반환하는지 identical() 함수르로 확인할 수 있다.
xxxxxxxxxx
example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)
결과 :
xxxxxxxxxx
## [1] TRUE
우리는 두 가지 방법으로 읽어 올 셀을 지정할 수 있다.
n_max
인수를 사용한다.cell_rows
혹은 cell_cols
과 연결하여 range
인수를 사용한다.
예를 들어, 우리는 앞의 5개 행을 불러오기 위해 n_max = 5
라고 설정한다.
xxxxxxxxxx
# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)
iris
xxxxxxxxxx
# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
iris_no_header
데이터 프레임에서 , R은 x_1, x_2, x_3, x_4, x_5 등의 다섯 변수를 생성했다.
우리는 또한 스프레드 시트의 행과 열을 선택하기 range
인수를 사용할 수 있다. 아래의 코드에서, 우리는 A1:B5 범위를 선택하기 excel 형식을 사용한다.
xxxxxxxxxx
# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)
결과 :
xxxxxxxxxx
## [1] 4 2
우리는 example_1이 2개의 열, 4개의 행을 반환한다는 것을 알 수 있다. 데이터 세트는 헤더를 가지고 있고, 차수는 4x2 이다.
두 번째 예에서 우리는 반환할 행의 범위를 제어하는 cell_rows()
함수를 사용한다. 1 ~ 5 행을 불러오려면 cell_rows(1:5)
를 설정할 수 있다. cell_rows(1:5)는 cell_rows(5:1)과 동일한 결과를 반환한다.
xxxxxxxxxx
# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)
dim(example_2)
결과 :
xxxxxxxxxx
## [1] 4 5
그러나 example_2는 4x5 행렬이다. iris
데이터 세트는 헤더가 있는 5개의 열을 가지고 있다. 모든 열의 헤더와 함께 처음 네 개의 행을 반환한다.
만일 첫번쨰 행에서 시작하지 않는 행들을 불러오고자 한다면, col_names = FALSE
를 포함해야 한다. range = cell_rows(2:5)
를 사용하면, 그 결과는 이제 헤더가 없는 데이터 프레임이 된다.
xxxxxxxxxx
iris_row_with_header <- read_excel(example, range = cell_rows(2:3), col_names = TRUE)
iris_row_no_header <- read_excel(example, range = cell_rows(2:3),col_names = FALSE)
xxxxxxxxxx
We can select the columns with the letter, like in Excel.
# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)
결과 :
xxxxxxxxxx
## [1] 150 2
주의 : range = cell_cols("A:B")
는 Null이 아닌 값을 가진 모든 셀을 출력한다. 데이터 세트는 150개의 행을 포함하므로 read_excel()
은 최대 150개의 행을 반환한다. 이것은 dim() 함수로 확인된다.
read_excel()
은 셀에 숫자 값이 없는 기호가 나타나면 NA
를 반환한다. 두 함수의 조합으로 결측치(missing values)의 갯수를 셀 수 있다.
sum
is.na
여기에 코드가 있다.
xxxxxxxxxx
iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))
결과 :
xxxxxxxxxx
## [1] 50
'setosa' 종에 속하는 행들인 50개의 결측치가 있다.
우리는 heaven
패키지로 다른 파일 형식을 불러올 것이다. 이 패키지는 SAS, STATA 및 SPSS 소프트웨어를 지원한다. 파일 확장자에 따라 다음의 함수를 사용하여 다양한 유형의 데이터 세트를 열 수 있다 :
read_sas()
read_dta()
또는read_stata()
read_sav()
or read_por()
. 확장자를 확인해야 한다.이 함수에는 하나의 인수만 필요하다. 파일이 저장되어 있는 경로(PATH)를 알아야 한다. SAS, STATA 및 SPSS의 모든 파일을 열 준비가 되어 있다. 이 세 함수들은 URL도 받아들인다.
xxxxxxxxxx
library(haven)
haven
은 conda r-essential
에 딸려 있다. 그렇지 않으면 링크에 접속하거나, 터미널에서 conda install -c conda-forge r-haven
을 입력한다.
다음의 예를 위해, IDRE의 admission
데이터 세트를 사용할 것이다.
xxxxxxxxxx
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)
결과 :
xxxxxxxxxx
## # A tibble: 6 x 4
## ADMIT GRE GPA RANK
## <dbl> <dbl> <dbl> <dbl>
## 1 0 380 3.61 3
## 2 1 660 3.67 3
## 3 1 800 4.00 1
## 4 1 640 3.19 4
## 5 0 520 2.93 4
## 6 1 760 3.00 2
STATA 데이터 파일은 read_dta()
로 불러올 수 있다. 같은 데이터 세트로서 .dta 확장자로 저장된 파일을 사용한다.
xxxxxxxxxx
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)
결과 :
xxxxxxxxxx
## # A tibble: 6 x 4
## admit gre gpa rank
## <dbl> <dbl> <dbl> <dbl>
## 1 0 380 3.61 3
## 2 1 660 3.67 3
## 3 1 800 4.00 1
## 4 1 640 3.19 4
## 5 0 520 2.93 4
## 6 1 760 3.00 2
read_sav()
함수를 이용하여 SPSS 파일을 불러온다. 파일의 확장자는 '.sav'이다.
xxxxxxxxxx
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)
결과 :
xxxxxxxxxx
## # A tibble: 6 x 4
## admit gre gpa rank
## <dbl> <dbl> <dbl> <dbl>
## 1 0 380 3.61 3
## 2 1 660 3.67 3
## 3 1 800 4.00 1
## 4 1 640 3.19 4
## 5 0 520 2.93 4
## 6 1 760 3.00 2
R로 데이터를 불러오려면 다음 체크리스트를 실행하는 것이 유용하다. 그러면 R로 데이터를 불러오는 것이 쉬울 것이다 :
exchange_rate_$_€
는 부적절한다. exchange_rate_dollar_euro
로 사용하는 것이 좋다.NA
를 사용한다. 그렇게 하지 않으면 나중에 그 형식을 정리해야 한다.
다음 표는 R에서 다른 유형의 파일을 불러오기 위해 사용할 함수가 요약되어 있다. 제1열에는 함수와 관련된 라이브러리가 표시되어 있다. 마지막 열에는 기본적인 인수 값이 수록되어 있다.
라이브러리 | 목적 | 함수 | 기본 인수 값 |
---|---|---|---|
utils | CSV 파일 읽기 | read.csv() | file, header =TRUE, sep = "," |
readxl | EXCEL 파일 읽기 | read_excel() | path, range = NULL, col_names = TRUE |
haven | SAS 파일 읽기 | read_sas() | path |
haven | STATA 파일 읽기 | read_stata() | path |
haven | SPSS 파일 읽기 | read_sav() | path |
다음의 표는 read_excel()
로 선택하여 불러올 수 있는 다양한 방법을 보여준다.
함수 | 목적 | 인수 |
---|---|---|
read_excel() | n개의 행 읽기 | n_max = 10 |
엑셀에서 같이 행과 열 선택 | range = "A1:D10" | |
색인으로 행 선택 | range= cell_rows(1:3) | |
문자로 열 선택 | range = cell_cols("A:C") |