“자료구조data structure는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.” 위키백과
자료구조는 건축물의 구조, 목적에 맞게 설계된 뼈대라면, 알고리즘은 그 뼈대에 건축물을 짓는 방법론에 비유할 수 있습니다. 자료형은 데이터를 담는 그릇이라 할 수 있죠.
구글링으로 발견한 코드를 자신의 데이터에 적용할 때 에러가 발생하고, 문제를 해결하지 못하는 이유는 무엇일까요? 그것은 자료형과 자료구조에 대한 이해가 부족하기 때문입니다. 데이터 분석 과정은 데이터를 다양한 형태로 변환하는 과정의 연속입니다. 때문에 자료구조가 더욱 중요합니다.
통계분석을 위한 대표 언어인 R의 자료구조로는 벡터vector, 행렬matrix, 배열array, 데이터프레임data frame, 리스트list가 있습니다. 이 글에서는 자료구조의 특징을 간략히 알아봅니다. 편집자 주
벡터
벡터는 같은 자료형의 원소를 일렬로 늘어 놓은 1차원 자료구조입니다. 예를 들어 검정색을 0, 흰색을 255라는 정수로 표현하면, 0~255는 밝기를 숫자로 표현한 것이 됩니다. 고객의 키, 몸무게, 나이 등 다양한 정보로 바꾸어 생각해보면 더 이해하기 쉽습니다.
행렬
행렬은 1차원 벡터를 행과 열이 있는 2차원 형태로 변환한 자료구조입니다. 벡터를 행row과 열column이 있는 2차원 자료구조인 행렬로 변환할 수 있습니다. 위에 보이는 행렬은 5행 4열짜리 행렬입니다. 행렬은 흑백사진에 적합한 자료구조입니다. 행과 열 개수(길이)는 해상도resolution, 행렬의 성분component은 각 픽셀pixel의 밝기를 정수로 표현한 겁니다. 그렇다면 컬러사진은 어떻게 표현할 수 있을까요? 행렬 하나로는 어렵습니다. 빛의 삼원색이 R빨강, G녹색, B파랑이므로 컬러사진을 데이터로 표현하려면 행렬이 3개 필요합니다. 행렬 3개를 따로 선언할 수도 있지만, 배열을 쓰면 객체 하나로 표현할 수 있습니다.
데이터프레임
데이터프레임은 행렬과 같은 2차원 자료구조입니다. 그런데 행렬은 모든 원소의 자료형이 같아야 한다는 특징이 있지만, 데이터프레임은 자료형이 서로 다른 열벡터를 원소로 가질 수 있습니다. 열벡터는 세로 방향으로 일렬로 늘어선 벡터를 의미하며, 데이터프레임에서 원소가 됩니다. 열벡터를 열이나 컬럼 또는 변수라고 표현하기도 합니다. 예를 들어 고객 정보를 수집하여 데이터로 저장한다고 가정해봅시다. 고객 정보에는 고객ID, 고객명, 성별, 나이, 키 등의 컬럼이 있습니다. 각 컬럼마다 정수형, 문자형, 실수형 벡터가 사용됩니다. 이렇게 다양한 자료형이 섞인 데이터를 행렬로 저장할 수 없습니다. 왜냐하면 행렬은 모든 성분의 자료형이 같아야 하기 때문입니다.
데이터 분석을 하면서 가장 많이 다루는 자료구조는 데이터프레임입니다. 앞에서 언급한 바와 같이 엑셀 파일을 R로 불러오면 데이터프레임으로 생성됩니다. 그리고 데이터프레임의 원소는 열벡터입니다. 따라서 우리가 R 자료구조에 대해서 집중적으로 공부해야 할 것은 바로 벡터와 데이터프레임이 됩니다. 특히 벡터의 특징을 제대로 이해하고 있어야 데이터프레임을 잘 다룰 수 있게 됩니다.
리스트
마지막으로 리스트는 위에서 언급한 모든 자료구조를 원소로 갖는 자료구조입니다. 리스트는 함수function와 표현식expression도 원소로 가질 수 있습니다. R을 이용하여 데이터 분석 작업을 실행할 때 다른 사용자가 배포한 패키지package 함수를 이용하게 됩니다. 일반적으로 함수가 반환하는 결과가 리스트인 경우가 매우 많습니다. 따라서 데이터 분석을 잘 하려면 R 자료구조 중에서 벡터와 데이터프레임 못지 않게 리스트도 잘 다루어야 합니다.
나성호
2002년에 삼성화재 CRM 파트에서 직장생활을 시작하여 현대캐피탈, 하나카드, 하나금융경영연구소 등 다양한 금융회사에서 데이터 분석을 직접 수행하는 마케터이자 연구원으로 약 17년 동안 근무했습니다.
패스트캠퍼스 전임강사로 <R을 활용한 웹 크롤링>과 을, 멀티캠퍼스에서 <R을 활용한 데이터 분석>, 러닝스푼즈 나노디그리 과정에서 <R을 활용한 데이터 분석>을 강의했습니다. 현재는 R과 파이썬으로 데이터 수집(웹 크롤링), 전처리, 시각화, 통계 분석 및 머신러닝을 주제로 여러 기업에서 강의를 하고 있습니다. 2020년 말에 박사 과정을 수료하여 졸업을 눈앞에 두고 있습니다.
저·역서
《나성호의 R 데이터 분석 입문》 저
《효율적인 R 프로그래밍》 공역
《포워드 2019 미래를 읽다》 공저