R 프로그램에서 데이터(외부파일) 불러오기

R에서는 파일 형식에 상관이 없이 대부분의 데이터 파일을 불러올 수 있습니다.

파일 확장자에 따라 조금씩은 다르나 대부분 형식이 비슷합니다.

아래의 예제 코딩을 참고해서 사용해보시를 추천을 드립니다.

 

앞서 불러오고자 하는 파일이 R 설치 폴더에 없으면,

불러오는데 에러가 나기 때문에 꼭 사전에 경로를 지정을 해주셔야합니다.

 

아래의 TXT 파일의 예를 들어서 data.txt 파일을 불러온다고 하면

양 사이에 쌍따옴표(“”)를 붙여야하고 경로까지 같이 넣어서 진행하시면 됩니다.

 

여기에서 매우 중요한 부분은

경로에서 “\”이 아닌 “/”을 사용한다는 것입니다.

 

이 부분을 놓쳐서 왜 에러가 나지 하면서 시간을 소비하는 경우가 많습니다.

 

윈도우탐색기 등에서 경로를 가져와서 붙여넣기를 하면

꼭 “\”을 “/”으로 변경을 해주셔야합니다.

 

즉 D드라이브의 work 폴더의 data.txt 파일을 불러온다고 하면

“D:\work\data.txt” 가 아닌

“D:/work/data.txt” 으로 코딩해주셔야합니다.

 

모든 R 프로그램 경로 지정에서는 “/”을 사용해주셔야 합니다.

그러면 아래에 각 파일형태별로 불러오는 예제를 말씀드리겠습니다.



#텍스트파일불러오기

R 프로그램에서 텍스트 파일을 불러오는 코딩은

read.table 입니다.

 

아래와 같이 쓰면 data 데이터 테이블이 만들어집니다.

data <- read.table(“data.txt”, header = TRUE, sep = “\t”, quote = “”, dec=”.”, fill = TRUE)

– header는 데이터에 열 이름이 포함되어 있으면 TRUE, 그렇지 않으면 FALSE로 지정합니다.

– sep는 필드를 구분하는 구분자입니다. 일반적으로 ,, \t 등이 사용됩니다.

– quote는 문자열을 감싸는 기호입니다. “”, ”, `   등이 사용됩니다.

– dec는 소수점을 지침합니다. , 또는 .를 사용합니다.

– fill은 행의 길이가 서로 다를 때 결측값을 채울지를 지정합니다.

 

보통 header와 sep까지는 작성을 해줍니다.

 

#CSV파일불러오기

R 프로그램에서 CSV 파일을 불러오는 코딩은

read.csv 입니다.

data <- read.csv(“data.csv”, header = TRUE)

– header는 데이터에 열 이름이 포함되어 있으면 TRUE, 그렇지 않으면 FALSE로 지정합니다.

 

#엑셀파일불러오기

엑셀파일을 불러오는 코딩은 정말 많이 있습니다.

많이 사용하는 코딩은 아래와 같습니다.



1. readxl

패키지: readxl

엑셀 파일을 읽어오는 데에 특화된 패키지입니다.

엑셀(.xlsx, .xls) 파일만 지원합니다.

시트명을 기준으로 데이터를 불러올 수 있습니다.

간단하고 가벼운 구조로 되어 있으며, 의존성이 적습니다.

 

2. openxlsx

패키지: openxlsx

다양한 형식의 엑셀 파일(.xlsx, .xls)을 처리하는 범용적인 패키지입니다.

여러 개의 시트를 동시에 불러올 수 있는 등 확장된 기능을 제공합니다.

Java와 연동하여 작동하기 때문에 Java가 설치되어 있어야 합니다.

 

3. xlsx:

패키지: xlsx

엑셀 파일의 데이터를 직접 읽고 쓰는 기능을 제공합니다.

특히, 쓰기 기능에 있어서 확장된 기능을 제공합니다.

 

패키지별로 장단점이 있어서 필요에 따라 맞춰서 사용을 하시면 됩니다.

 

저는 개인적으로는 평소 readxl 패키지를 사용하고

쓰기의 경우 xlsx 패키지를 사용합니다.

 

openxlsx 패키지는 제가 잘 못 사용해서도 있겠지만

java 연동이라서 꼬이는 경우가 자주 있어서 자주 사용하지는 않습니다.

 

위의 패키지를 사용할 때에는

사전에 설치(인스톨)이 되어 있어야하며

각 코딩을 실행하기 전에 라이브러리가 되어야 합니다.

 

저번 포스팅에서도 언급을 했드시 인스톨은 1번만 진행을 하면 되고

라이브러리는 코딩 맨 상단에 일률적으로 적어놓으시면 좋습니다.

 

일반인이 사용하는 패키지는 한정적이라서 메모리 등에 크게 문제가 되지 않으므로

보통 본인이 사용하는 패키지를 전부 상단에 항상 똑같이 복사를 해놓으시면 작업하시기에 편리하실 겁니다.

 

각 패키지별로 간단하게 예제로 설명 드리겠습니다.



#readxl패키지설명

library(readxl)
data <- read_excel(“data.xlsx”, sheet = “Sheet1”, range = “A1:C10”, col_names = TRUE)

– sheet: 원하는 시트명이나 시트 인덱스로 데이터를 가져올 수 있습니다.

– range: 가져올 데이터 범위(셀 범위)를 지정할 수 있습니다.

– col_names: 열 이름 유무(TRUE/FALSE)를 설정합니다.

– na: 결측값으로 처리할 문자열을 지정합니다.

 

※ 주의사항입니다.

read_excel 로 언더바입니다.

간혹 점과 언더바를 헷갈리셔서 에러가 나는 경우가 많이 있습니다.

주의해야합니다.

 

#openxlsx패키지설명

library(openxlsx)
 
# 엑셀 파일 불러오기
wb <- loadWorkbook(“data.xlsx”, loadStyle = TRUE)
 
# 불러올 시트와 범위 지정
data <- read.xlsx(wb, sheet = 1, startRow = 1, endRow = -1, colNames = TRUE)
 
# wb 객체는 다음과 같이 close 함수를 사용하여 닫아주는 것이 좋습니다.
close(wb)

 

아니면 아래와 같이 진행해도 상관 없습니다.

# 선택한 시트의 데이터 불러오기
data <- read.xlsx(“data.xlsx“, sheet = desired_sheet)

 

#xlsx패키지설명

library(xlsx)
data <- read.xlsx(“data.xlsx”, sheetIndex = 1, header = TRUE)

– sheetIndex: 원하는 시트 인덱스로 데이터를 가져올 수 있습니다.

– sheetName: 원하는 시트명으로 데이터를 가져올 수 있습니다.

– startRow, endRow: 가져올 데이터의 시작 행과 끝 행을 지정할 수 있습니다.

– startCol, endCol: 가져올 데이터의 시작 열과 끝 열을 지정할 수 있습니다.

– header: 열 이름 유무(TRUE/FALSE)를 설정합니다.

 

지금까지 일반적으로 엑셀파일을 불러오는 패키지에 대해 살펴보았습니다.

하지만 대기업이나 공공기관 등 보안에 민감한 회사에서 근무를 하면

보안 솔루션(DRM) 등에 의해서 엑셀 파일이 락이 걸리는 경우가 있습니다.

 

이런 경우 해당 파일을 업로드를 하면 데이터를 못 불러오는 경우가 있습니다.

 

이럴 때 excel.link 패키지를 이용하면 됩니다.

 

이는 컴퓨터에 엑셀을 먼저 열고

그다음에 해당 엑셀의 데이터를 가져오는 형태로 진행이 되어서

DRM 등 보안 솔루션이 작동을 해도 문제 없이 데이터를 가지고 올 수 있습니다.

 

물론 엑셀을 열고 작업을 하는 것이기 때문에 속도는 느린 점이 있습니다.

감안해서 사용하면 좋을 것 같습니다.

 

#excel.link패키지설명

library(excel.link)
data <- xl.read.file(“data.xlsx”, xl.sheet = “sheet1”, top.lefe.cell = “A1”)

– xl.sheet: 원하는 시트명으로 데이터를 가져올 수 있습니다.

– top.lefe.cell: 가져올 데이터의 시작 셀을 지정할 수 있습니다.

 

지금까지 R 프로그래밍시 데이터를 불러오는 방법에 대해 살펴봤습니다.

 

감사합니다.