R 프로그래밍

[R] R 프로그래밍 기초

DayOff 2022. 4. 29. 15:21

 

분석환경의 이해

통계 패키지 R

  • 통계 분석 과정에서 수행되는 복잡한 계산이나 시각화 기법을 쉽게 사용할 수 있도록 설계된 무료 소프트웨어
  • 기본으로 제공되는 기능 외에도 사용자들이 직접 제작한 패키지를 이용하여 무수히 많은 기능들을 사용할 수 있도록 확장 가능
  • 상용 소프트웨어나 출력물에 견주어 뒤쳐지지 않는 강력한 시각화 요소

 

R의 선택 기준

  SAS SPSS R
프로그램 비용 유료, 고가 유료, 고가 오픈소스
설치 용량 대용량 대용량 적음
다양한 모듈지원 및 비용 별도 구매 별도 구매 오픈소스
최근 알고리즘 및 기술 반영 느림 다소 느림 매우 빠름
학습자료 입수의 편의성 유료 도서 위주 유료 도서 위주 공개 논문 및 자료 많음
질의를 위한 공개 커뮤니티 NA NA 매우 활발

 

R의 역사

   - 1993년 뉴질랜드 Ross Inaka와 Robert Gentleman에 의해 개발된 소프트웨어

   - AT&T에서 개발한 통계 프로그래밍 언어인 S언어 기반

   - S보다 한 단계 발전되었다는 의미에서 알파벳 S보다 앞선 R을 차용했다는 의미를 포함

   - S로 작성된 대부분의 코드를 실행시킬 수 있었으며, UNIXㆍWindowsㆍLinuxㆍMac OS를 지원하며 발전

 

R의 특징

 그래픽 처리

  • 상용 소프트웨어에 버금가는 상당한 수준의 그래프와 그림을 그릴 수 있다.
  • 사용자가 세부적인 부분까지 직접 지정하여 섬세한 작업을 수행할 수 있다.
  • 고해상도 이미지를 생산하면서 처리 시간이 매우 빠르다.
  • 보고서 작성이나 발표 자료 작성 시에도 유용하게 사용할 수 있다.

 

 데이터 처리 및 계산능력

  • 벡터, 행렬, 배열, 데이터 프레임, 리스트 등 다양한 형태의 데이터 구조를 지원한다.
  • 복잡한 데이터 구조 내의 개별 데이터에 접근하는 절차가 간단하여 큰 데이터를 핸들링하기 간편하다.

 

 패키지

  • 사용자들이 스스로 개발하는 새로운 함수들을 패키지의 형태로 내려받아 사용할 수 있다.
  • 이러한 확장성 덕분에 다른 통계 프로그램에 비해 최신 이론이나 기법을 사용해보기가 더 쉽다.

 

R 소개

  • R은 오픈소스 프로그램으로 통계, 데이터마이닝을 위한 언어이다.
  • 윈도우, 맥, 리눅스 OS에서 사용 가능하다.
  • 객체 지향 언어이며 함수형 언어이다. 즉, 통계 기능뿐만 아니라 일반 프로그래밍 언어처럼 자동화하거나 새로운 함수를 생성하여 사용 가능
  • 객체 지향 언어는 필요한 부분을 프로그래밍으로 골라 추출하여 활용이 가능하다.
  • 함수형 언어는 깔끔하고 단축된 코드, 매우 빠른 수행 속도, 디버깅 노력 감소, 병렬 프로그래밍의 전환이 용이하다는 특징을 가진다.

 

R IDE 도구

1. R Studio

  • 메모리에 변수가 어떻게 되어있는 지와 타입이 무엇인지를 볼 수 있고 스크립트 관리와 도큐먼테이션이 편리하다.
  • 스크립트용 프로그래밍으로 어렵지 않고 쉽게 자동화가 가능하다.

2. Visual Studio Code

 파이썬으로 프로그래밍을 할 때 사용했던 IDE로 나에겐 VSCode가 익숙하다. 하지만 R을 학습하는 단계에서는 R Studio를 사용하면서 학습 할 생각이다. 학습을 완료한 이후에는 익숙한 VSCode로 추가적인 학습을 이어나갈 생각이다.

 

R 프로그래밍 기초

(1) 패키지(Package)

- R 함수, 데이터 및 컴파일된 코드의 모임
- 패키지 자동설치: install.packages("패키지")
- 패키지 수동설치: install.packages("패키지명", "패키지 위치")

 

(2) 스크립트로 프로그래밍 된 파일 실행

- source("파일명.R")
- pdf( ): 그래픽 출력을 pdf 파일로 지정

 

(3) 배치모드

- 사용자와 인터랙션이 필요하지 않은 방식으로, 매일 실행되어야 하는 프로그램에서 프로세스를 자동화할 때 유용하다.
- 배치파일 실행 명령: batch.R 실행파일이 있는 위치에서 윈도우 창에 "R CMD BATCH batch.R" 명령어 실행

 

(4) R 명령어

print( )  출력 형식을 지정할 필요 없음. 한 번에 하나의 객체만 출력
cat( )  여러 항목을 묶어서 연결된 결과로 출력. 복합적 데이터 구조(행렬, list )를 출력 불가
 " <-, <<-, =, ->" 대입 연산자
 ls( ) 변수 목록보기
 rm( ) 변수 삭제하기
 c( ) 벡터 생성하기

- 벡터의 원소 중 하나라도 문자가 있으면 모든 원소의 자료형은 문자형태로 변환

지역변수  단순히 값을 대입하기만 하면 지역변수로 생성. 함수가 종료되면 지역변수는 삭제됨
조건부 실행문  if
반복 실행문  for, while, repeat
전역변수  "<<-"를 사용하여 전역변수를 변경할 수 있지만 추천하지 않음
수열  "시작값
반복  rep( ) 함수는 숫자나 변수의 값들을 반복해서 생성 가능.
문자열 붙이기  paste( ) 함수
문자열 추출  substr(문자열, 시작점, 끝점) 함수는 문자열의 특정 부분을 추출 가능
논리값  T True, F False

- 논리연산자

== 같다
!= 같지 않다
<, <= 작다, 작거나 같다
>, >= 크다, 크거나 같다

 

· 벡터의 원소 선택하기: V[n], n은 원소의 자릿수, 논리형 벡터, 벡터의 이름.

· 벡터의 원소 제외하기: V[-n], n은 제외하고자 하는 원소의 자릿수

 

(5) 벡터의 연산

[, [[  인덱스
$  요소, 변수 뽑아내기
^  지수 계산. ) 5^2 = 25
-, +  단항 마이너스, 플러스 부호
:  수열 생성
%/%  나눗셈 결과의 몫 반환
%%  나눗셈 결과의 나머지 반환
%*%  행렬 곱
*, /  곱하기, 나누기
+, -  더하기, 뻬기
!  논리 부정. !T = F
&  논리 "and".
|  논리 "or".
~  (formula)
->, ->>  오른쪽 대입
=  오른쪽을 왼쪽으로 대입
<-, <<-  오른쪽을 왼쪽으로 대입
?  도움말

 

(6) 기초통계 명령어

mean(변수)  변수의 평균 산출
sum(변수)  변수의 합계 산출
median(변수)  변수의 중앙값 산출
log(변수)  변수의 로그값 산출
sd(변수)  변수의 표준편차 산출
var(변수)  변수의 분산 산출
cov(변수1, 변수2)  변수 간 공분산 산출
cor(변수1, 변수2)  변수 간 상관계수 산출
length(변수)  변수의 길이를 값으로 산출