R 프로그램에서 파일 읽기 및 쓰기는 데이터 분석과 시각화를 위해 중요한 작업입니다.
다양한 파일 형식에 따라 R에서 파일을 읽고 쓸 수 있는 함수들이 다르며, 각기 다른 데이터 구조를 다룰 수 있습니다.
이번 글에서는 데이터를 다룰 수 있도록 파일 형식에 따라 읽고 쓰는 방법에 대해 설명하겠습니다.
RData 및 RDS 파일
RData 및 RDS 파일 형식은 R 객체를 저장하거나 불러올 때 유용합니다.
RData 파일 읽기 및 쓰기
RData는 load()와 save() 함수를 사용하여 R 환경 내의 여러 객체를 한 번에 저장하고 불러올 수 있습니다.
save(data, file = "파일경로/파일이름.RData")
load("파일경로/파일이름.RData")
RDS 파일 읽기 및 쓰기
readRDS()와 saveRDS() 함수를 사용하여 단일 R 객체를 저장하고 불러옵니다.
saveRDS(data, "파일경로/파일이름.rds")
data <- readRDS("파일경로/파일이름.rds")
텍스트 파일 읽기 및 쓰기
일반 텍스트 파일(.txt)은 데이터를 간단하게 저장하고 교환하는 데 사용됩니다. R에서는 read.table()과 write.table() 함수를 사용하여 이러한 파일을 읽고 쓸 수 있습니다. 이 함수들은 CSV 파일과 비슷한 역할을 하면서도, 구분자가 다르거나 구조가 조금 다른 경우에 유용합니다.
텍스트 파일 읽기 (read.table() 함수)
기본 사용법: 텍스트 파일을 R의 데이터 프레임으로 읽어옵니다.
data <- read.table("파일경로/파일이름.txt", header = TRUE, sep = "\\t")
- header = TRUE: 첫 번째 행을 열 이름으로 사용.
- sep = "\\t": 구분자를 지정(탭, 공백, 콤마 등).
주요 옵션:
- stringsAsFactors = FALSE: 문자열을 팩터형으로 변환하지 않음.
- na.strings: NA로 처리할 값을 지정.
텍스트 파일 쓰기 (write.table() 함수)
기본 사용법: 데이터 프레임을 텍스트 파일로 저장합니다.
write.table(data, "파일경로/파일이름.txt", sep = "\\t", row.names = FALSE)
- sep = "\\t": 구분자를 지정(탭, 공백, 콤마 등).
- row.names = FALSE: 행 이름을 저장하지 않음.
주요 옵션:
- quote = FALSE: 문자열을 따옴표로 감싸지 않음.
- col.names = FALSE: 열 이름을 저장하지 않음.
- append = TRUE: 기존 파일에 데이터를 추가.
CSV 파일 읽기 및 쓰기
CSV(Comma-Separated Values) 파일은 데이터를 쉼표로 구분하여 저장하는 파일 형식으로, R에서 데이터를 불러오거나 저장할 때 매우 자주 사용됩니다. 아래에서 CSV 파일을 읽고 쓰는 방법을 더욱 자세히 설명하겠습니다.
CSV 파일 읽기 (read.csv() 함수)
read.csv() 함수는 CSV 파일을 R의 데이터 프레임(data.frame) 형태로 불러오는 데 사용됩니다.
이 함수는 다양한 매개변수를 제공하여 CSV 파일의 구조와 속성에 맞춰 데이터를 불러올 수 있도록 도와줍니다.
data <- read.csv("파일경로/파일이름.csv", header = TRUE, sep = ",", stringsAsFactors = FALSE)
- file: 파일의 경로와 이름을 지정합니다. 경로는 상대 경로나 절대 경로를 사용할 수 있습니다. 예를 들어, "C:/Users/Name/Documents/data.csv"와 같은 형식으로 작성합니다.
- header = TRUE: CSV 파일의 첫 번째 행을 열 이름으로 사용할지 여부를 결정합니다. 만약 CSV 파일의 첫 행이 실제 데이터일 경우 header = FALSE로 설정합니다.
- sep = ",": 열을 구분하는 구분자를 지정합니다. CSV 파일의 기본 구분자는 쉼표(,)이므로, 특별한 경우가 아니라면 기본값을 사용하면 됩니다. 만약 구분자가 다른 경우, 예를 들어 세미콜론(;)이나 탭(\\t)으로 되어 있다면 적절히 변경해야 합니다.
- stringsAsFactors = FALSE: 문자열 데이터를 팩터(factor)형으로 자동 변환하지 않도록 설정합니다. R에서 문자열을 팩터로 자동 변환하는 경우가 많지만, 이를 원하지 않을 때는 FALSE로 설정하여 문자열로 불러옵니다.
CSV 파일 쓰기 (write.csv() 함수)
write.csv() 함수는 R의 데이터 프레임을 CSV 파일로 저장하는 데 사용됩니다. 이 함수 역시 여러 매개변수를 통해 파일 저장 방식을 세밀하게 조정할 수 있습니다.
write.csv(data, "파일경로/파일이름.csv", row.names = FALSE)
- file: 저장할 파일의 경로와 이름을 지정합니다. 이때, 저장할 경로가 없는 경우 파일이 생성되지 않으므로 주의가 필요합니다.
- row.names = FALSE: 데이터 프레임의 행 이름을 파일에 저장할지 여부를 결정합니다. 기본적으로 TRUE로 설정되어 있으며, 데이터 프레임의 행 번호가 자동으로 저장됩니다. 그러나 행 이름이 필요하지 않다면 FALSE로 설정하여 이를 생략할 수 있습니다.
Excel 파일 읽기 및 쓰기
엑셀(Excel) 파일은 비즈니스 및 데이터 분석 환경에서 자주 사용되는 파일 형식으로, 특히 .xlsx 및 .xls 형식이 많이 사용됩니다.
R에서는 이러한 엑셀 파일을 읽고 쓰기 위해 몇 가지 패키지를 사용할 수 있으며, 여기에서는 readxl과 writexl 패키지를 중심으로 설명하겠습니다.
Excel 파일 읽기 (read_excel() 함수)
R에서 엑셀 파일을 읽기 위해 readxl 패키지를 사용합니다. 이 패키지는 .xlsx와 .xls 형식 모두를 지원하며, 특히 엑셀 파일의 특정 시트(sheet)를 선택하여 데이터를 불러올 수 있습니다.
read_excel() 함수는 엑셀 파일을 읽어와서 R의 데이터 프레임(data.frame)으로 변환합니다.
library(readxl)
data <- read_excel("파일경로/파일이름.xlsx", sheet = 1)
- file: 읽고자 하는 파일의 경로와 이름을 지정합니다. 예를 들어 "C:/Users/Name/Documents/data.xlsx"와 같은 방식으로 파일 경로를 지정합니다.
- sheet: 불러오고자 하는 시트(sheet) 번호 또는 시트 이름을 지정합니다. 기본값은 첫 번째 시트(sheet = 1)이며, 특정 시트의 이름을 지정할 수도 있습니다.
data <- read_excel("data.xlsx", sheet = "Sheet2")
추가 옵션
- range: 특정 셀 범위를 지정하여 데이터를 읽어올 수 있습니다. 이 옵션은 엑셀 파일의 일부 데이터만 가져올 때 유용합니다.
- col_names: 첫 번째 행을 열 이름으로 사용할지 여부를 지정합니다. 기본값은 TRUE이며, FALSE로 설정하면 자동으로 열 이름이 생성됩니다.
- col_types: 각 열의 데이터 유형을 명시적으로 지정할 수 있습니다. 예를 들어, 숫자형(numeric), 문자형(text), 날짜형(date) 등을 지정할 수 있습니다.
- na: NA로 인식할 값들을 지정할 수 있습니다. 예를 들어 빈 셀이나 특정 문자를 NA로 처리하려면 이 옵션을 사용할 수 있습니다.
data <- read_excel("data.xlsx", range = "A1:C10")
data <- read_excel("data.xlsx", col_names = FALSE)
data <- read_excel("data.xlsx", col_types = c("text", "numeric", "date"))
data <- read_excel("data.xlsx", na = c("", "NA", "missing"))
Excel 파일 쓰기 (write_xlsx() 함수)
엑셀 파일에 데이터를 저장하기 위해 writexl 패키지의 write_xlsx() 함수를 사용합니다. 이 함수는 .xlsx 형식으로 데이터를 저장할 수 있습니다.
write_xlsx() 함수는 R의 데이터 프레임을 엑셀 파일로 저장하는 데 사용됩니다.
library(writexl)
write_xlsx(data, "파일경로/파일이름.xlsx")
- file: 저장할 파일의 경로와 이름을 지정합니다. 파일의 경로가 존재하지 않으면 에러가 발생할 수 있으므로, 정확한 경로를 지정하는 것이 중요합니다.
추가 옵션
- path: 파일의 저장 위치를 명시적으로 지정합니다. 기본적으로는 file에 지정한 경로를 사용하지만, path를 사용해도 동일한 결과를 얻을 수 있습니다.
- 다중 시트 저장: 여러 개의 데이터 프레임을 각각 다른 시트로 저장할 수 있습니다. 이 경우 리스트 형태로 데이터를 전달합니다.
write_xlsx(data, path = "C:/Users/Name/Documents/saved_data.xlsx")
data_list <- list(Sheet1 = df1, Sheet2 = df2)
write_xlsx(data_list, "multi_sheet_data.xlsx")
Excel 파일 저장 시 주의사항
- 파일 형식: write_xlsx() 함수는 .xlsx 형식으로만 저장할 수 있습니다. .xls 형식이 필요한 경우에는 openxlsx 패키지를 사용하는 것이 좋습니다.
- 셀 서식: writexl 패키지는 기본적인 데이터 저장만 지원하며, 셀 서식이나 복잡한 포맷은 지원하지 않습니다. 셀 서식이 필요한 경우 openxlsx 패키지를 고려해 볼 수 있습니다.
기타 엑셀 파일 처리 방법
엑셀 파일을 다룰 때 더 복잡한 작업이 필요할 경우, openxlsx나 xlsx 패키지를 사용할 수 있습니다. 이들 패키지는 다음과 같은 고급 기능을 제공합니다:
- 셀 서식 지정: 셀 색상, 폰트 스타일, 셀 병합 등의 서식을 지정할 수 있습니다.
- 차트 추가: 엑셀 파일에 차트를 추가할 수 있습니다.
- 피벗 테이블: 엑셀의 피벗 테이블을 생성할 수 있습니다.
예시: openxlsx 패키지로 셀 서식 지정하기
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "Sheet1")
writeData(wb, sheet = 1, data)
# 셀 서식 지정
header_style <- createStyle(fontColour = "#FFFFFF", fgFill = "#4F81BD", halign = "CENTER", textDecoration = "BOLD")
addStyle(wb, sheet = 1, header_style, rows = 1, cols = 1:ncol(data), gridExpand = TRUE)
saveWorkbook(wb, "styled_data.xlsx", overwrite = TRUE)
JSON 파일 읽기 및 쓰기
JSON 파일은 웹 데이터와 비정형 데이터를 처리할 때 자주 사용됩니다. jsonlite 패키지를 사용합니다.
JSON 파일 읽기
fromJSON() 함수를 사용하여 JSON 파일을 데이터 프레임 또는 리스트로 변환합니다.
library(jsonlite)
data <- fromJSON("파일경로/파일이름.json")
JSON 파일 쓰기
toJSON() 함수를 사용하여 데이터를 JSON 형식으로 저장합니다.
json_data <- toJSON(data, pretty = TRUE)
write(json_data, "파일경로/파일이름.json")
이번 글에서는 R에서 다양한 파일 형식을 읽고 쓰는 방법에 대해 설명했습니다. 데이터를 효과적으로 불러오고 저장하는 것은 데이터 분석의 기본이자 핵심입니다. 이 글에서 다룬 내용들을 활용하면 다양한 데이터 소스와 구조를 다룰 수 있으며, 이를 통해 분석 작업의 효율성과 정확성을 높일 수 있습니다. 앞으로의 데이터 분석 여정에서 이 지침들이 유용하게 사용되길 바랍니다.
감사합니다!
'프로그래밍 언어 > R' 카테고리의 다른 글
08. R에서 사용하는 기본 함수 이해 (0) | 2024.08.24 |
---|---|
07. R에서의 기본 연산자 이해 (산술, 비교, 논리, 결측값 처리 연산자) (0) | 2024.08.22 |
05. R의 변수와 데이터 타입 및 구조 3️⃣ (array, 데이터 요약 및 시각화, 데이터 타입 확인 및 변환) (0) | 2024.08.17 |
04. R의 변수와 데이터 타입 및 구조 2️⃣ (리스트, 행렬, 데이터프레임) (0) | 2024.08.15 |
03. R의 변수와 데이터 타입 및 구조 1️⃣ (변수와 데이터 타입, 팩터, 벡터) (0) | 2024.08.13 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!