처음 R을 접하면 어디서부터 시작해야 할지 막막한 것이 사실이다. 대개 그러니까. 나의 경우는 SAS나 STATA와 같은 통계 패키지를 다루어본 경험이 있어서 그나마 R을 이해하는 것이 조금은 수월했다. 만약 컴퓨터 언어나 통계 패키지조차 다뤄본 경험 없이 처음으로 R을 시작했다면 실로 난감함의 연속이다. 그래서 큰 그림, 개념을 이해하고 R을 섭렵해보면 좋겠다는 뜻에서 적어본다.
1. 데이터 구조를 이해하자
R을 쉽게 접근하려면 데이터 구조를 반드시 먼저 이해해야 한다. 여기서 막히면 그야말로 답이 없다.
내가 어떤 명령어를 실행했을 때 결과물이 어떤 모습으로 출력될지 상상이 안되면 다음 단계로 나가기가 불가능하기 때문이다.
더구나 그야 말로 아주 큰 빅데이터를 다루기 위해 R을 배우려고 하는 경우에 R의 데이터 구조에 대한 이해는 필수 불가결한다. 따라서 가장 먼저 해야 할 것은 R에서 다루는 데이터 구조를 하나씩 차근차근 이해하자.
2. Package를 이해하자
처음에 R은 무료이고 오픈소스라는 말씀을 드렸다.
R 패키지는 검증된 문제 해결 함수 모음으로 정의할 수 있다.
뒤에서 다루겠지만 그래프에 특화된 ggplot2 패키지는 다양한 그래프를 출력하기 위하여 사용자가 몇 가지 변수들만 지정해주면 원하는 결과물을 얻을 수 있다. ggplot2 패키지는 누구나 다운로드하여 무료로 설치하고 활용할 수 있는데, 이렇게 검증된 패키지들이 다양하게 개발되어 있고 현재도 개발 중이어서 많은 R 유저들은 강력한 패키지들을 활용할 수 있는 이점이 있다.
데이터 구조를 이해하고 패키지를 잘 활용하여 원하는 결과물을 얻을 수 있다면 R의 이점을 대부분 누릴 수 있게 되는 것이다.
3. 자신만의 함수를 활용하자
빅 데이터를 효과적으로 수집하고, 정제하고, 처리하기 위해서는 반복 작업을 자동화할 필요가 있다.
만약 "전기차"이라는 단어가 포함된 지난 1년 치 신문기사를 수집하여 마케팅에 활용하기 위해 분석하는 업무를 수행해야 한다고 가정해보자.
수작업으로 하려면 구글이나 네이버에서 전기차 키워드 검색을 하고 "Ctrl+C", "Ctrl+V"를 끝없이 수행해야 할 것이다.
R을 이해하는 순간 일은 컴퓨터에게 시키고 당신은 편안한 휴식을 취할 수 있을 것이다.
"전기차", "전기자동차", "일렉트릭 카" 등 유사한 단어들을 포함한 기사를 일일이 검색하거나, 수집된 신문기사를 분석하기 위해 오타를 수정하는 등의 일들은 모두 자신만의 함수를 적절히 개발하면 컴퓨터가 훨씬 정확하고 신속하게 처리할 수 있는 일들이다.
여기서 예를 든 것은 빙산의 일각이다.
당신이 R을 활용할 수 있다면 상상도 할 수 없는 많은 일들을 컴퓨터에게 시킬 수 있다.
그것도 당신은 아무런 일도 하지 않으면서 말이다.
패키지나 함수를 모두 공부해서 암기하거나 이해할 필요는 없다.
내가 어떤 문제를 R을 통해 해결할 것이냐에 따라 수많은 패키지 중에서 적절한 것을 선택하여 공부하고 함수를 만들 수 있기 때문이다.
하지만 데이터 구조만은 확실히 알고 넘어가자.
데이터 구조를 모르면 어떤 패키지를 써야 할지, 어떤 함수를 만들어야 할지 판단할 수조차 없게 된다.
데이터 구조는 R 이해의 출발점이다.
4. 데이터 구조
R에서 데이터 유형은 변수(객체)에 어떤 내용을 저장할 것인가를 나타내며, 데이터 구조는 여러 값을 어떤 구조로 저장할 것인가를 의미한다.
데이터 유형은 정수형, 실수형, 논리형, 문자형 등이 있다.
데이터 구조는 벡터(vector), 행렬(matrix), 배열(array), 데이터 프레임(data frame), 리스트(list) 등이 있다.
1) 벡터
R에서 모든 변수는 벡터(vector)이다. 벡터는 1차원 구조로서 동일한 유형의 데이터 값을 일렬로 나열한 것이다.
벡터
2) 요인
벡터와 같은 구조이나 범주형의 데이터라는 점에서 구분된다. 벡터와 같아 보이지만 1,2,3은 각각의 수준을 의미하는데, 예를 들면 1=초등학생, 2=중학생, 3=고등학생 등을 나타내는 것으로 사용할 수 있다.
요인
3) 행렬
행렬은 2차원 구조로서 동일한 유형의 데이터 값을 직사각형 형태로 나열한 것이다. nrow는 행의 개수, ncol은 열의 개수를 각각 의미한다. 총 9개의 데이터 값이므로 nrow가 3이면 ncol은 자동으로 3의 값을 갖게 된다.
행렬
4) 배열
배열은 데이터 값을 3차원 이상의 격자형으로 나열한 것이다. v4는 1부터 12까지의 숫자형 벡터이고, 이 벡터를 배열형으로 만든 사례를 보자. c(3,2,2)는 행렬(3X2)가 2층으로 쌓이도록 배열을 구성하겠다는 뜻이다. 참고로 벡터가 배열에 배치되는 순서도 주의 깊게 볼 필요가 있다. , , 1에 먼저 값들이 배열되는데 1열부터 순서대로 값들이 배열된 후 2열에 배치된다. 다음으로 , , 2에도 동일한 순서대로 값들이 배열됨에 유의하자.
배열
5) 데이터 프레임
이상의 데이터 구조는 동일한 데이터 유형을 담을 수 있음에 비해 데이터 프레임은 행렬과 같으나 열마다 상이한 데이터 유형을 다룰 수 있다는 점에서 이점이 있다. 행은 하나의 객체를 나타내고, 열은 하나의 변수를 각각 의미하며, 상이한 유형의 데이터를 다룰 수 있어서 일반적으로 가장 많이 쓰인다. v1은 숫자형 자료, v2는 문자형 자료임에도 에러가 나지 않고 동일한 틀 안에서 처리가 가능하다.
데이터 프레임
5) 리스트
리스트는 1차원 구조로 모든 객체(벡터, 행렬, 데이터 프레임, 리스트)를 일렬로 나열한다. 리스트의 원소가 다시 리스트가 될 수 있으므로 계층적 구조의 데이터를 저장한다. 리스트 역시 서로 다른 데이터 유형을 하나의 리스트로 묶을 수 있는 이점이 있다. [[1]]은 리스트의 첫 번째 원소임을 의미하고 [1]은 숫자형 벡터임을 유추할 수 있다. [[2]]는 리스트의 두 번째 원소임을 의미하고 팩터임을 유추할 수 있다. [[3]]은 리스트의 세 번째 원소임을 의미하고 3X3 매트릭스임을 유추할 수 있다.
리스트
여기서는 데이터 구조에 대한 감을 익힐 수 있을 정도로 아주 초보적인 내용만을 소개하였다. R에 관한 기본서에 상세한 내용이 있으니 기본서 한 권정도는 처음부터 정독할 것을 추천한다. 데이터 구조를 이해해야 올바른 패키지, 함수를 적용할 수 있고 원하는 결괏값을 도출할 수도 있으니 다소 시간이 걸리더라도 다양한 유형의 데이터 구조가 어떤 상황에서 어떻게 활용되는지 충분히 공부해서 내 것으로 확실히 만들자.