CHAPTER 1. R 기초A Brief Introduction to R 양동우
R은 통계 및 데이터 분석에 활용되는 프로그래밍 언어이다. 오픈소스로 누구나 접근 가능하며, 데이터 분석, 시각화, 통계 모델링, 머신러닝, 그래픽 생성 등의 작업에 사용된다. 이 장에서는 R의 기본작동원리를 소개한다.
먼저 객체와 데이터의 유형에 대해 알아본다. R에서는 데이터를 객체에 저장하는데, 객체는 다양한 형태와 유형의 데이터를 지원한다. 숫자 형, 문자열, 논리형 자료에 대해 알아본다. 데이터 저장에 있어 기초인 벡터에 대해 학습하고, 벡터의 확장된 형태인 행렬과 행과 열로 구성된 표 구조인 데이터 프레임을 소개한다. R은 다양한 데이터 형식을 지원하며, 데이터를 외부 파일에서 읽어오거나 다른 포맷으로 내보낼 수 있는 기능을 제공한다. CSV, Excel, JSON 등의 형식을 다룰 수 있으며, 이러한 형태의 자료를 불러오는 방법과 R에서 생성한 자료를 위의 형식으로 내보내는 방법에 대해 알아본다.
또한, 이번 장에서는 데이터 전처리 방법을 소개한다. 데이터 분석을 하기 전에 데이터를 전처리하고 정제하는 작업은 기본이지만 매우 중요하다. R을 사용하여 데이터의 결측치 처리, 이상치(outlier) 제거, 데이터 변환 등을 수행할 수 있으며, 두 개 이상의 객체를 결합하거나 하나의 데이터 구조에서 여러 조건을 사용하여 일부를 추출하는 방법도 소개한다. 이러한 전처리 작업에서 많이 활용되는 조건문과 반복문을 활용하여 작업의 효율성을 높이는 방법에 대해서도 알아본다.
1.1 자료의 유형
1.1.1 RStudio 인터페이스 소개
RStudio는 R 언어의 통합개발환경(IDE; integrated development environment) 이다(R for the Science). 즉, R 언어를 보다 편리하고 효율적으로 사용할 수 있도록 여러 가지 편리한 도구를 제공하는 인터페이스라 볼 수 있다. RStudio가 R 언어 사용에 있어 더욱 편리한 환경을 제공한다는 것은, RStudio 프로그램이 R 언어의 종속적 도구로 사용된다는 의미이다. 이러한 이유로, RStudio를 설치하기에 앞서 반드시 기본형 R 언어 프로그램이 설치되어 있어야 한다.
RStudio가 R 언어의 IDE라는 것은 RStudio가 없어도 기본형 R 언어 프로그램으로도 원하는 과업을 수행할 수 있음을 의미한다. 또한, 일반적으로 R과 RStudio에 적용되는 대부분 작동원리가 같다는 것을 의미한다. 하지만 인간과 컴퓨터 내부의 여러 물리적 장치(입력, 처리, 출력장치) 사이에서 소통을 돕는 인터페이스(interface)의 관점에서 R과 RStudio에 명확한 차이가 존재함을 의미하기도 한다.
예를 들어, 기본형 R의 인터페이스를 살펴보면 콘솔(console) 창만 존재함을 알 수 있다. R 프로그램에서 콘솔은 명령어를 입력하고 엔터(Enter)키를 누르는 즉시 명령어를 해석한 결과가 바로 출력되는 창문 형태의 인터페이스를 의미한다. 명령어 한 개가 즉각적으로 처리되어 출력되어 바로 결과 확인이 가능하다. 그러나 일반적으로 프로그래밍 작업은 수많은 명령어와 자료처리 과정을 내포하고 있어 콘솔형 인터페이스만으로 과업을 수행하기에는 비효율성이 크다. 수많은 명령어를 실행하지 않고 따로 작성해놓아야 하는 경우가 일반적이다. 이런 경우 스크립트(script)는 다른 프로그램(예. 메모장, 문서 프로그램 등)을 활용하여 따로 작성해놓아야 한다. 또한 이렇게 즉각적 출력물만 보여주는 콘솔형 인터페이스만 제공하는 기본형 R 프로그램에서는 프로그래밍을 통해 작성된 데이터셋, 변수, 객체, 함수 등을 효과적으로 관리하기 어렵다. 이렇게 작업 중에 생성된 여러 자료에 관한 내용을 편리하게 정리하여 보여주는 인터페이스가 없는 관계로 작업자는 이에 관한 내용을 기억 및 메모 하거나 콘솔에서 재확인하는 과정을 겪어야 한다.
R 통합개발환경(IDE)으로서 RStudio는 각종 편리한 인터페이스를 제공한다. RStudio에서 제공하는 여러 가지 편리한 인터페이스는 아래와 같이 요약할 수 있다(datacamp, 2022).
1.1.2 객체(objects)와 메서드(methods)
R에서 자주 사용되는 개념 중에 가장 기초적인 개념으로 객체(objects)가 있다. 객체는 일정한 형식으로 이름 붙여진 자료구조(data structure) 이다(Kronthaler & Zollner, 2021). R에서 사용되는 모든 개별적 값(values), 값들의 묶음인 자료(data), 함수(functions) 등이 모두 객체이다. R을 통해 컴퓨터가 이해하는 방식의 모든 대상이 객체가 된다고 할 수 있다. 객체는 자료를 저장하거나 가공하기 위해 사용된다. 다양한 함수나 연산자를 통해 만들어진다. R에서 객체를 생성하면, 이를 활용하여 계산, 변환, 분석 등을 할 수 있다. 즉, 프로그래밍을 수행하는 데 있어 기초적 자료로 활용된다. 더불어, 프로그래밍을 통해 달성하고자 하는 모든 결과물도 객체가 된다. 이러한 이유로, R에서 객체는 개념적으로 상당히 포괄적이다. 객체를 더욱 자세히 유형화할 수 있는데, 크게 값(value)과 자료(data)로 구분할 수 있다.
1) 값(values)
값(values)은 정보를 저장하는 기본단위로 이해할 수 있는데, 크게 문자(characters), 숫자(numbers), 요인(factors), 날짜(dates), 논리값(logical value 또는 boolean)으로 구분할 수 있다. R에서 문자값은 큰따옴표나 작은따옴표로 묶어 입력 및 출력되는 모든 값을 의미한다(Kronthaler & Zollner, 2021).
숫자는(numbers 또는 numeric values) 정수(integer), 소수점을 포함한 실수(real numbers 또는 floating) 등을 포함한다. 주로 십진법 단위로 표현되지만, 경우에 따라 2진법, 12진법 등으로 변환할 수 있다(Kronthaler & Zollner, 2021). 숫자 값에는 사칙연산과 같은 산술적 연산자(arithmetic operators)를 사용할 수 있으며, 그 이외에도 더 복잡한 수학적 연산(예. 평균, 분산, 표준편차, 로그값, 제곱근)을 수행할 수 있다(Kronthaler & Zollner, 2021).
날짜(dates)는 연도, 날짜, 시각을 표현하는 자료형식이다. 날짜(dates)는 보통 숫자로 표현되어 자칫 숫자로 인식되기 쉽지만, R에서 특정 값이 날짜라고 정의되면 숫자와 전혀 다른 성격을 지니게 된다. 일반적인 사칙연산과 함수계산이 작동하지 않거나 작업자의 의도와 다르게 작동하게 된다. 날짜는 숫자, 문자, 기호의 조합으로 표기할 수 있다. 초기 입력은 숫자 또는 문자열의 형식을 지니지만, 이러한 표기를 날짜로 변환시켜주는 함수를 활용하여 날짜로 변환한다. 또한 날짜 형식의 자료 간에는 산술적 연산이 가능하다. R에서 날짜 형식을 설정하는 방법은 주로 format() 함수와 날짜 형식 문자열을 사용하는 방법이 있다. format() 함수는 날짜 값을 원하는 문자열 형식으로 변환하는 데 사용된다.
--- 본문 중에서