728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


이제 외부파일의 엑셀파일을 한번 읽어보자.

엑셀파일 포맷은 크게 xls,xlsx 두 종류가 있는데 전자는 2000년대까지 이고 후자는 2000년 이후이다.

둘을 읽기위해서는 기존의 R로는 읽을 수 없고 라이브러리를 추가해줘야한다.

사용하는 라이브러리는 xlsx와 gdata라는 라이브러리인데 각각 설치를 해주자.

설치하는 방법은 여기를 참고하자.

이제 설치가 완료됬다면 라이브러리에 추가되어 있다. 이제 설치된 라이브러리를사용해서 엑셀파일을 읽어보자.

사용할 엑셀파일은 필자가 다운로드 받았다.



오픈소스 정보의 요람인 data.go.kr에서 교통사고통계를 다운받자.

다 csv파일이다.



내려보다보니 xls파일이 존재한다.


현재 작업 디렉터리에 넣어두자.

혹시나 모르니 xlsx파일도 생성했다.



이제 둘다 완성했으니 읽어보자.

구글링에 의하면 xls는 gdata로 읽을 수 있고 xlsx는 xlsx로 읽을 수있다고 하였다.

근데 필자가 해보니까 둘다 파일을 다 읽을수 있더라.

뭘 써야하는지는 조금 꺼림직하다. 알아서 선택하라.


해당 파일은 이렇게 생겼다.

이제 한번 읽어들여보자.


print(setwd('/Users/jiharu/Desktop/WorkSpace/RStudioWorkSpace/Test1'))

library(xlsx)

library(gdata)

fileXlsx<-read.xlsx2('2013_시도별_월별_교통사고.xlsx',sheetIndex=1,startRow=4,header=TRUE)

fileXls<-read.xls('2013_시도별_월별_교통사고.xls',sheet=1,fileEncoding="utf-8")

print(file)


이렇게 읽어들여보자 xlsx2이 xls보다 옵션이 더 많다. 아무래도 나중에 생겨서 그런거 같다.

xlsx의 경우에는 한글파일이 있을경우 읽어지지가 않더라.

xlsx2는 문제없이 읽어졌다. 둘다 시트번호로 데이터를 추출할 수 있다.

시트이름으로도 추출이 가능하며 시트이름을 접근할경우 파라메터를 sheetName으로 해주어야한다.

startRow라는 파라메터로 시작행을 선택할 수 있다. 보다시피 위의 경우3행까지는 의미가 없으므로 4행부터 시작하기 위해서 지워주자.

헤더는 있다는것을 알릴 수 있다. 기본이 true이기에 사실은 필요없는구문이다.


gdata로 읽은것은 읽어오는 동안은 손볼는게 힘드므로 그냥 둘 수 밖에 없다.

읽고나서 자료를 수정해야하는 것이다. 이건 귀찮은 일이다.


반면에 xlsx로 읽은것은 데이터를 수정할 수 있어서 더더욱 깔끔하게 읽어졌다.

이렇게 읽어지는게 더 사용하기 쉽다.


결론으로 돌아와서 필자는 gdata를 써야할 필요성을 못느꼈다.

일단 실제로 사용해보면 gdata나 xlsx나 둘다 확장자는 아무거나 읽어진다.

xlsx도 읽어지고 xls도 읽어진다는 이야기다. 반면에 쓰는건 xlsx가 gdata보다 몇배는 더 편리한것 같다.

따라서 엑셀 파일을 읽을경우에는 xlsx를쓰는 것을 추천한다.


사실 xlsx파일을 읽는것 자체가 굉장히 피곤한 일이다.

읽는것도 읽는것인데 저장하는것도 짜증나는 일이니 말이다.

따라서 xls로 쓰는 방법에 대해선 논하지 않겠다.

사실은 읽을때도 csv, 저장할때도 csv로 저장하는것이 제일 좋은 방법이다.


'Programming > R' 카테고리의 다른 글

[R-16]파일 읽기(xml)  (0) 2017.11.19
[R-15]파일 읽기,쓰기(csv)  (0) 2017.11.19
[R-13]현재작업 디렉터리, 파일 저장, 읽기(txt)  (0) 2017.11.19
[R-12]사용자로부터 입력받기  (0) 2017.11.18
[R-11]함수와 전역변수  (0) 2017.11.18

+ Recent posts