R에서 데이터를 엑셀에 정리할 때 유용하게 사용할 수 있는 excel.link 패키지를 알아보도록 하겠다.
동작 예시 및 주의점
먼저 시연 영상을 보도록 하자.
특히 논문이나 통계 레포트에 숫자가 많이 들어가는 경우 이를 엑셀로 옮기는 과정에서 실수를 할 수 있다. 이 과정에서 발생하는 실수는 나중에 찾아내기도 어렵다. 데이터를 다룰 때는 분석 과정 중에 발생하는 오류를 최대한으로 줄이는 것이 중요한데 이 excel.link 패키지가 그 부분을 보완해줄 수 있다.
그리고 회귀 모델 100개씩 생성하고 정리하거나. 통계 시뮬레이션 할 때 유용하다. 통계 레포트를 특정 파일로 저장하려면 데이터프레임 으로 저장해야 하는데, 레포트를 데이터프레임으로 변환 하는 코드 작성이 까다로운 경우에는 더욱 유용하다고 할 수 있다.
물론 엑셀 프로그램은 설치 되어 있어야 하고, Windows 운영체제여야 한다. 이 내용은 excel.link 패키지 문서에 명시되어있다.
excel.link 를 설치할때 혹시나 다음과 같은 메세지가 뜬다면 Rtools 프로그램도 같이 설치하면 된다. 현재 사용하고 있는 R 버전에 맞는 Rtools 프로그램을 설치하면 되고, R 4.0 이상을 사용하는 경우는 이슈가 발생할 수 있으니 관련 포스팅을 참고하면 된다.
실습
일단 패키지를 불러와서 실행을 해보자.
1 | library("excel.link") |
엑셀이 기존에 실행되어있지 않은 경우는 새로 엑셀이 열리며 새 시트(Sheet1)의 a1
셀에 1이 입력된 것을 볼 수 있다. 리스트 객체 처럼 대괄호를 이중으로 사용하는데 이 문법은 excel.link의 고유 문법이니 그러려니 하자. 물론 대괄호를 한 쌍만 사용해도 동작하긴 한데 텍스트 기반의 반복문을 사용할 수 없다. 그래서 대괄호를 2중으로 사용하는 것을 권장한다.
1 | xlrc[["b1"]] = 1:5 |
이렇게 연속된 숫자를 넣을 수도 있고,
1 | xl.sheet.add("new") |
new 라는 새로운 시트를 만든 후에 a1
셀 기준으로 데이터 세트를 한 번에 넣을 수도 있다.
1 | xl_iris = xl.connect.table("a1", |
기존 세트에 데이터가 있을 경우 특정(여기서는 a1
)셀을 기준으로 표 범위를 잡고 내용물을 뽑아올 수도 있다.
유용한 함수
excel.link 패키지에는 다양한 함수가 있지만, 필자가 주로 사용하는 함수는 다음과 같다.
xl.sheet.activate()
: 특정 시트 활성화xl.sheet.add()
: 새 시트 추가xl.sheet.delete()
: 특정 시트 삭제
마치며
데이터 분석을 하다보면 아무리 R이나 Python을 잘해도 엑셀을 절대 놓을 일은 없다. 각각 잘 하는 것도 중요하지만, 두 도구를 동시에 연결해서 운용할 수 있다면 시너지 효과가 훨신 클 것이다.