13.2 데이터 저장하기
R 에서 처리한 개체를 다양한 형식으로 내보내 저장할 수 있습니다. SPSS, SAS 및 Stata의 경우에는 별도의 패키지를 사용해야 합니다. 그리고 Excel의 경우는 xlsx
패키지가 필요합니다.
13.2.1 R 형식으로 저장하기
R에서는 처리한 데이터를 R 고유의 데이터 형식으로 저장할 수 있습니다. 대표적인 형식이 .rds
와 .Rdata
(또는 .rda
) 형식입니다.
이러한 형식으로 데이터를 저장하는 것은 많은 장점이 있습니다.
- 데이터를 R로 복원하는 것이 더 빠릅니다.
- 데이터에 인코딩된 R 고유의 정보들(예 : 속성, 변수 유형 등)을 그대로 유지해 줍니다.
saveRDS()
함수와 readRDS()
함수는 단일 R 개체 만 처리합니다. 그러나 불러들인 개체의 개체 이름이 개체가 저장될 때의 개체 이름과 같을 필요가 없다는 점에서 다중 개체 저장 방식보다 더 유연합니다.
예를 들어 앞의 예에서 전국 대학도서관정보 파일에서 불러온 mydata
개체를 .rds
형식의 파일로 저장해 보겠습니다.
## mydata 데이터 세트를 data_output 폴더에 univ_library.rds 파일로 저장합니다.
saveRDS(mydata, "data_output/univ_library.rds")
# 저장된 iris.rds 파일을 다시 불러들입니다.
<- readRDS("data_output/univ_library.rds")
univ.libr str(univ.libr)
## 'data.frame': 1834 obs. of 9 variables:
## $ 평가년도 : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
## $ 도서관구분: chr "LIBTYPE008" "LIBTYPE008" "LIBTYPE008" "LIBTYPE008" ...
## $ 도서관코드: int 227 25 269 290 311 340 363 387 408 43 ...
## $ 면적 : chr "경북" "대전" "경기" "서울" ...
## $ 시군구 : chr "영천시" "서구" "여주시" "종로구" ...
## $ 장서수 : int 20827 31054 114815 6326 756633 1306474 1611325 136147 4421 1379785 ...
## $ 사서수 : int 1 1 2 1 6 11 30 2 0 20 ...
## $ 대출권수 : int 2044 15745 10677 4647 53358 303522 187458 26534 495 123313 ...
## $ 예산액 : num 3.44e+07 0.00 3.80e+07 7.50e+06 1.05e+08 ...
한편 복수의 개체들을 저장하기 위해서는 save()
함수를 사용하며, 그 결과는 .Rdata
형식으로 저장됩니다.
예를 들어, 전국 대학도서관정보인 mydata
와 mydata1
등의 2개의 개체를 library.Rdata
라는 파일로 저장해 보겠습니다.
## mydata와 mydata1 두 개의 데이터 세트를 저장합니다.
save(mydata, mydata1, # 저장할 개체를 지정합니다.
file = "data_output/library.Rdata") # 저장할 Rdata의 경로와 파일명을 지정합니다.
## 저장된 Rdata 파일은 load() 함수로 불러옵니다.
load("data_output/library.Rdata") # 변수에 할당할 필요가 없습니다.
load()
함수의 경우에는 Rdata
에 저장되어 있는 개체들의 이름을 그대로 불러오게 됩니다.
13.2.2 CSV로 저장하기
R에서 처리한 개체를 write.csv()
함수 또는 write.table()
함수를 이용하여 csv 파일로 저장할 수 있습니다.
write.csv()
함수의 형식은 다음가 같습니다.
write.csv(x, file = “”, row.names = TRUE)
x
: 파일에 저장할 데이터 프레임 또는 행렬 등의 개체입니다.file=""
: 데이터를 저장할 경로와 파일명입니다.row.names=TRUE
: TRUE면 행 이름을 CSV 파일에 포함시켜 저장합니다.
앞에서 mydata
개체를 write.csv() 함수를 이용하여 mydata.csv
로 저장해 보겠습니다.
예를 들어, 전국대학교 도서관정보를 담고 있는 mydata
개체를 저장해 보겠습니다. 그런데 이 개체에는 한글이 있기 때문에 fileEncoding =
인수에 “UTF-8
”을 입력해 줘야 합니다.
## mydata 개체를 mydata.csv로 저장합니다.
write.csv(mydata, "data_output/mydata.csv",
fileEncoding = "UTF-8") # 한글 코딩을 설정합니다.
## 또는 write.table() 함수를 이용할 수도 있습니다.
write.table(mydata, "data_output/mydataTable.csv",
fileEncoding = "UTF-8") # 한글 코딩을 설정합니다.
## 데이터 항목의 구분자를 설정할 수도 있습니다.
write.table(mydata, "data_output/mydataTable.csv",
sep = "\t", # 구분자로 탭문자(\t)를 설정합니다.
fileEncoding = "UTF-8") # 한글 코딩을 설정합니다.
13.2.3 엑셀 시트로 저장하기
xlsx
패키지의 write.xlsx()
함수를 이용하면 R의 개체를 Excel 시트로도 저장할 수 있습니다.
예를 들어, mydata
개체를 mydata.xlsx
파일로 저장해 보겠습니다.
## mydata 개체를 mydata.xlsx 파일로 저장합니다.
# install.packages("xlsx")
library(xlsx)
write.xlsx(mydata, "data_output/mydata.xlsx") # 특별히 한글코드를 지정할 필요가 없습니다.
엑셀 파일로 저장하는데 시간이 걸리는 것을 느낄 수 있습니다.
13.2.4 기타 형식으로 저장하기
SPSS, SAS, Stata 형식으로도 저장할 수 있습니다.
다음의 예를 참고하기 바랍니다. mydata
개체를 저장해 보겠습니다.
## SPSS로 저장합니다.
library(foreign)
write.foreign(mydata,
"c:/mydata.txt", "c:/mydata.sps",
package = "SPSS")
## SAS로 저장합니다.
library(foreign)
write.foreign(mydata,
"c:/mydata.txt", "c:/mydata.sas",
package="SAS")
## Stata로 저장합니다.
library(foreign)
write.dta(mydata, "c:/mydata.dta")