이번에는 R에서 작업한 데이터를
파일로 저장하는 방법을 알려드리도록 하겠습니다.
대부분 엑셀로 작업을 하지만
불러오기도 텍스트와 CSV로도 알아봤으니
텍스트, CSV, 엑셀(xlsx) 파일로 저장하는 것을
알아보겠습니다.
※ 사전 주의사항입니다.
파일 경로 지정에서 “\”이 아닌 “/”을 사용합니다.
#텍스트파일로저장하기
R 프로그램에서 텍스트 파일로 저장하는 코딩은
write.table 입니다.
write.table(data, file = “data.txt”, sep = “\t”, quote = FALSE, row.names = FALSE, col.names = TRUE)
-file: 저장할 파일의 경로 이름을 지정
* 만약 D드라이브에 work 폴더에 저장을 한다고 하면 “d:/work/data.txt”입니다.
– sep: 필드(컬럼) 구분자(separator) 지정. 위의 예시는 탭(“\t”)으로 설정
– quote: 논리값으로, 문자열 필드를 따옴표(“”)로 감쌀지 여부
– row.names: 논리값으로, 행 인덱스(row names) 포함 여부 결정
– col.names: 논리값으로, 열 이름(column names) 포함 여부 결정
#CSV파일로 저장하기
R 프로그램에서 CSV 파일을 불러오는 코딩은
write.csv 입니다.
write.csv(data, file = “data.csv”, row.names = FALSE)
-file: 저장할 파일의 경로와 이름 지정. 위의 예시에서는 “data.csv”로 설정
-row.names: 논리값으로, 행 인덱스(row names) 포함 여부 결정
#엑셀파일로저장하기
엑셀파일을 불러오는 코딩의 패키지는
readxl, openxlsx, xlsx 입니다.
저장하는 코딩의 패키지는
writexl, openxlsx, xlsx 입니다.
read만 write로 변경이 되었습니다.
각 패키지에 대한 특징은 아래와 같습니다.
1. writexl
– 간단하고 직관적인 인터페이스를 제공
– 외부 의존성이 없으며, 순수 R 코드로 구현
– 다른 패키지에 비해 기능이 상대적으로 제한적
– 단순한 데이터 프레임을 엑셀 파일로 저장하는 데 유용
2. openxlsx
– 다양한 기능과 유연성을 제공
– 벡터, 행렬, 데이터 프레임 등 다양한 데이터 구조 지원
– 시트 추가, 셀 서식 지정, 차트 생성 등 다양한 작업 수행 가능
– 외부 Java 라이브러리에 의존하므로 Java 환경이 필요
* 에러가 나는 경우 Java 설치가 필요합니다.
3. xlsx
– C++ 언어와 Rcpp 라이브러리를 사용하여 높은 성능 제공
– 대용량 데이터 처리 및 속도가 중요한 경우 유용
– 자체적인 XML 파서를 사용하여 외부 의존성 없음
요즘은 웬만해서는 xlsx(2007년 이후 버전)을
사용하기 때문에
저는 여러 개의 시트 작업이 필요한 경우는
openxlsx 패키지를 이용하고
그 외에는 xlsx 패키지를 주로 이용하는 편입니다.
각 패키지별로 간단하게 예제로 설명 드리겠습니다.
#write패키지설명
install.packages”writexl”)
library(writexl)
write_xlsxdata, path = “data.xlsx”)
library(writexl)
write_xlsxdata, path = “data.xlsx”)
– path: 저장할 파일의 경로와 이름 지정
– 데이터가 시트 형태로 저장됨
#openxlsx패키지설명
install.packages(“openxlsx”)
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, sheetName = “Data”)
writeData(wb, sheet = “Data”, x = data)
saveWorkbook(wb, file = “data.xlsx”, overwrite = TRUE)
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, sheetName = “Data”)
writeData(wb, sheet = “Data”, x = data)
saveWorkbook(wb, file = “data.xlsx”, overwrite = TRUE)
– sheetName: 새롭게 추가되는 시트의 이름 지정
– overwrite: 이미 동일한 이름의 파일이 존재하는 경우 덮어쓸 것인지 여부
※ 주의사항 : R은 영문 대소문자를 구분합니다. 맞춰서 사용을 해야 인식을 합니다.
※ 위의 코드에서는 openxlsx 패키지 함수들을 사용하여 새 워크북을 만들고 시트에 데이터를 쓴 다음 워크북을 엑셀 파일로 저장합니다.
아마 위의 설명을 들으면 이해하기가 어렵습니다.
정확한 표현 방법은 아니지만 제가 개인적으로 이해하고 사용하는 방법은 아래와 같습니다.
1) 새 워크북을 만듦 (create)
→ 엑셀 파일이라고 생각하면 됩니다.
2) 워크북 시트를 구성 (add)
→ 엑셀 파일의 각각의 시트라고 생각하면 됩니다.
시트가 여러 개이면 addWorksheet를 여러 개 작성하면 됩니다.
3) 워크북 시트를 저장 (write)
→ 엑셀 시트의 이름(시트명)과 넣을 데이터 선정합니다.
시트가 여러 개이면 동일하게 writeData를 여러 개 작성하면 됩니다.
4) 워크북을 파일로 저장 (save)
→ 워크북을 엑셀파일로 저장합니다.
만약 R 프로그램에서 data1, data2 데이터를
한 개의 엑셀파일에 두개의 sheet로 구성해서
저장하고 싶다면
wb <- createWorkbook()
addWorksheet(wb, sheetName = “Data1”)
addWorksheet(wb, sheetName = “Data2”)
writeData(wb, sheet = “Data1”, x = data1)
writeData(wb, sheet = “Data2”, x = data2)
saveWorkbook(wb, file = “data.xlsx”, overwrite = TRUE)
addWorksheet(wb, sheetName = “Data1”)
addWorksheet(wb, sheetName = “Data2”)
writeData(wb, sheet = “Data1”, x = data1)
writeData(wb, sheet = “Data2”, x = data2)
saveWorkbook(wb, file = “data.xlsx”, overwrite = TRUE)
위와 같이 코딩하면 됩니다.
그러면 엑셀 파일 안에
Data1 시트와 Data2 시트가 있을 겁니다.
#xlsx패키지설명
install.packages(“xlsx”)
library(xlsx)
write.xlsx(data, file = “data.xlsx”, sheetName = “Sheet1”, row.names = FALSE, col.names = TRUE)
library(xlsx)
write.xlsx(data, file = “data.xlsx”, sheetName = “Sheet1”, row.names = FALSE, col.names = TRUE)
– file: 저장할 파일의 경로와 이름 지정
– sheetName: 시트의 이름을 지정
– row.names: 논리값으로, 행 인덱스(row names) 포함 여부 결정
– col.names: 논리값으로, 열 이름(column names) 포함 여부 결정
이번에는 열려 있는 엑셀파일에
직접적으로 데이터를 넣는 방법에 대해서도
알아보겠습니다.
#excel.link패키지설명
library(excel.link)
xlc[[“A1”]]=data
xlc[[“A1”]]=data
– 현재 열려 있는 엑셀의 시트의 A1 셀부터 시작해서 data를 삽입합니다.
작업 순서를 아래와 같이 하면 됩니다.
1) 데이터를 넣을 엑셀 파일을 실행합니다. (없으면 신규로 만듭니다.)
2) 데이터를 넣을 엑셀 시트를 선택하고 아무 셀을 클릭합니다.
3) 위의 코드를 실행합니다.
그러면 해당 엑셀파일의 시트에 data가 삽입되어 있습니다.
최종적으로(가장 최근에) 선택한
엑셀 파일의 시트에 데이터가 들어가니
여러 개의 엑셀 파일이나 시트를 작업하면
주의해야합니다.
지금까지 R 프로그래밍시 데이터를 저장하는 방법에 대해 살펴봤습니다.