엑셀 파일 R에서 바로 불러 쓰기

R에서 Excel 2010의 Worksheet를 바로 불러서 쓸 수 있다. 물론 R의 data.frame 객체에 적합하게 데이터가 갖추어져 있어야 하지만. ㅋㅋ

예제에서는 Windows7, 64비트 컴퓨터를 가정해서 이야기한다.

우선 여러분 컴퓨터에 Java (JRE혹은 JDK) 64비트가 설치되어 있고, R도 64비트 버전을 쓴다고 하자. Java에 문제가 없는 지 확인하자. 왜냐하면 우리는 rJava를 써야 하니까...

자바에 문제가 없다면
시작 메뉴의 "프로그램 및 파일 검색" 창에 환경 변수라고 입력하자.
"시스템 환경 변수"를 클릭하고 "환경 변수"를 선택한다.
Java의 설치 디렉토리가 C:\Program Files\Java\jre7 이라고 하면 새로 환경 변수를 만들고 이름을 JRE_HOME이라고 하자. 이제 path 변수를 더블클릭하여 편집 창을 열고 다음과 같은 문구를 맨 끝에 추가한다.

;%JRE_HOME%\bin\server

창을 닫는다. 현재 R과 관련된 프로그램이 실행되어 있다면 모두 종료한다.

다시 R 프로그램을 연다.
이제 rJava와 XLConnect를 설치할 차례다.

> install.packages("rJava")
> install.packages("XLConnect")

이렇게 실행한다.

엑셀 파일이 준비되었다고 하고 디렉토리를 c:\users\me\rsample.xlsx 라고 하자. 데이터가 첫번째 워크 시트에 있다면 다음과 같이 입력하여 이 데이터를 불러올 수 있다.

> library(XLConnect)
> setwd("c:\\users\\me")
> test_data <-  readWorksheet(loadWorkbook("rsample.xlsx"),sheet=1)

복잡하면 다음과 같이 함수로 만들어두고 반복하여 쓰자.


read_xlsx <- function(file_name,n=1) {
  require(XLConnect)
  data <- tryCatch({
    readWorksheet(loadWorkbook(file_name),sheet=n)
  }, error=function(x) {cat("error\n")})
  data
}

> my_data_from_excel_t0 <- read_xlsx("d:/data/excel/my_data.xlsx")
> my_data_from_excel_t1 <- read.xlsx("d:/data/excel/my_data.xlsx",n=2)
> my_data_from_excel_t2 <- read.xlsx("d:/data/excel/my_data.xlsx",n=3)

댓글

이 블로그의 인기 게시물

R에서 csv 파일 읽는 법

xlwings tutorial - 데이터 계산하여 붙여 넣기