정보공간_1

[6기 신촌 김윤상] R 언어 #1 - Data Analysis에 최적화된 R 언어 알아보기 본문

IT 놀이터/Elite Member Tech & Talk

[6기 신촌 김윤상] R 언어 #1 - Data Analysis에 최적화된 R 언어 알아보기

알 수 없는 사용자 2014. 8. 8. 03:08

안녕하세요 신촌멤버십 23-1기 김윤상입니다.


저는 경영학을 복수전공하고있는 컴퓨터공학도로써 경영학에서 통계학에 많이 사용되는 R 언어에 대하여 알아보고


R 언어가 앞으로 Big Data Analysis에 활용되는 방법, 일반적인 코딩 시 R을 활용한 연산과


R의 다양한 Package를 이용한 그래픽 관련 작업을 다룰 예정입니다.









1. R 소개

Rlogo.png



  R언어는 S언어에서 파생된 언어로 많은 통계학자들이 통계학을 상업적이 아닌 언어로 이용하기 위하여 연구하고 만들어진 언어입니다. R은 GPL License를 가지고 있으며 R로 인하여 통계적 오류가 발생하였을 시 책임을 지지 않습니다.


R은 데이터 조작, 계산 및 그래픽 표시가 매우 강력합니다. 무엇보다도 R은 데이터 처리 및 가공이 강력합니다. 출판물 수준의 결과물을 그래픽으로 표시하여 많은 통계학자, 자료학자, 코더 등이 자신들의 결과물을 나타내는 것에 R을 이용합니다.



그림 - 몇 가지 R 그래프


2. R 시작하기


R은 http://www.r-project.org/ 링크로 가셔서 받으실 수 있습니다.


페이지 좌측의 Download, Packages CRAN을 클릭 하시고 Korea의 아무 링크나 클릭합니다.



R은 Windows, Linux, 그리고 Mac OS X를 모두 지원합니다. 자신의 운영체제에 맞는 버젼을 다운로드하여 설치합니다.


R을 설치하고 실행한 화면입니다. 위쪽의 메뉴 중 Edit - GUI preferences... 를 클릭하시면 입맛에 맞게 화면, 글꼴 등을 변경할 수 있습니다. 



R에는 많은 Package가 존재합니다. 그래서 사용자가 맞는 함수와 Package를 검색하여 사용해야 합니다.


함수의 이름을 알고 있지만 사용법을 모를때 스크립트 내에서 ?를 붙이면 그 함수의 설명을 띄워줍니다.


예) read.table 함수의 설명



이 외에도 도움말 메뉴의 여러 기능으로 원하는 함수를 찾을 수 있습니다.



3. R의 데이터 체계, 연산


R은 <- 연산자로 변수에 데이터를 할당합니다. 물론, -> 연산자로도 할당할 수 있으며 = 로도 할당할 수 있습니다.


x <- 10; // x에 10이라는 데이터가 할당됩니다.

x <- c(1,2,3,4); // x에 1, 2, 3, 4라는 벡터 데이터가 할당 됩니다.

y <- c(x, x, 1); // y 에 1, 2, 3, 4, 1, 2, 3, 4, 1이라는 벡터 데이터가 할당 됩니다.


1 + 2 ; 1 - 2 ;

4 * 8 ; 2 / 3 ;

2^5 ; 와 같은 식 모두 사용할 수 있습니다.



나눗셈의 경우 특이한 것이 있는데요. 보통 프로그래밍 언어에서 int의 나눗셈

5 / 2 는 2 입니다. 하지만 R은 기본적으로 소숫점 연산을 사용합니다.


나머지 연산은 5 %% 2와 같이 사용하셔야 합니다. 나누어 떨어지는 수를 나타내려면 5 %/% 2를 사용하세요. 5 % 2는 에러가 나는것을 보실 수 있습니다.



데이터가 벡터로 되고, 벡터들로 연산을 할 수 있습니다.


y <- c(1,2,3,4,5) ; x = y;

x + y + 1; x * y;


다음과 같은 결과를 확인하실 수 있습니다. 벡터 전체를 더할 수도, 뺄 수도 있습니다. 곱셈도 가능합니다.


또한, 벡터 배열을 통하여

log(x) ; log(x, base = 2) ; exp(x) ; sum(x) ; mean(x) ; median(x) ; sd(x) ;


와 같은 통계적 자료 계산도 편리하게 할 수 있습니다.



다음 표와 같은 연산자와 기호가 존재하며, 밑으로 갈 수록 연산 우선순위가 높아집니다.


log, exp와 같은 수학 함수 외에도 


sqrt, log, log10, choose(x,n) (Binomial Coeffcient, n!/x!(n-x)!), 

floor(maxint<x), ceiling(minint<x), trunc, round, 

signif, sin, cos, tan, abs 등과 같은 함수를 모두 사용할 수 있습니다.


자세한 사용법이 궁금하시면 위에 설명한 ?를 이용하시거나 도움말을 보시기 바랍니다.



rep(1, 5)와 같은 명령어로 똑같은 숫자를 반복해서 나타낼 수 있습니다.


1:5 명령어로 1부터 5까지의 수를 표시할 수 있습니다.


seq() 함수로 연속적으로 값을 늘려나갈 수 있습니다. seq(-10, 10, by=2)와 같은 함수로 범위 지정도 가능합니다.



위 코드 중 1:5 + 1:3을 봅시다. 이 코드를 실행하면 2 4 6 5 7 의 결과가 나오게 되며 Warning이 뜹니다.


1 2 3 4 5 + 1 2 3 1 2 = 2 4 6 5 7 의 결과가 나오는 것을 확인할 수 있습니다.


c(1,2,3) + rep(2, 2)를 하면 1 2 3 + 2 2 = 3 4 3 이 아닌 3 4 5가 나오는 것을 확인할 수 있습니다.



4. 행렬 벡터 계산


위에는 1차원 데이터만 가지고 연산을 수행해 보았습니다. 이제는 행렬벡터로 연산하는 법을 정리하겠습니다.


다음 예는 1차원 벡터를 2차원으로 변환하는 함수 입니다.



다음과 같이 matrix() 함수를 이용하여 1차원 행렬을 2차원 행렬화 할 수 있습니다.

y[2,]와 같은 명령어를 통해 해당 행이나 열을 참조할 수 있습니다.


이 행렬에 rbind, cbind 함수를 이용하여 데이터를 붙일 수 도 있습니다. t 함수를 이용하여 행과 열을 바꿀 수도 있습니다.



sort, rank, cumsum, comprod, cummax, cummin, pmax, pmin과 같은 함수는 다음과 같이 사용되어 결과를 나타냅니다.



두 행렬을 합쳐서 평균, 합, 등을 낼 수 있습니다. (colMeans, colSums, rowMeans, rowSums 등)



숫자가 아닌 문제 또한 행렬의 데이터로 차용될 수 있습니다. 그것으로 레이블을 다는 행위 또한 가능합니다.




심화 : levels와 table 함수를 이용하면 데이터를 특정 값으로 count하여 분류가 가능합니다. 

factor라는 자료구조를 활용합니다.





5. 데이터 편하게 넣기


R은 c로 데이터를 행렬화 하여 넣기도 하지만, 

C언어의 scanf 처럼 혹은 C++의 cin과 같이 scan 함수를 이용하여도 데이터를 받을 수 있습니다.



read.table() 함수를 이용하면 파일 혹은 Clipboard(복사한 데이터)를 이용하여 데이터를 넣는 것도 가능합니다.




여러 가지 인자를 참조할 수 있습니다. 예제는 sep으로 ; 문자를 분리문자로 사용합니다. 


함수를 정확하고 파워풀하게 사용하시려면 도움말을 보시는 것이 좋습니다.







이번 포스트에서는 기본적인 R 설치, 사용법과 데이터, 연산법을 알아 보았습니다.


R은 처음 접하는 분들은 매우 어렵지만 자주 사용하면서 데이터 처리에 대하여 익숙해지고 함수에 익숙해진다면 


그 어떤 언어보다 데이터를 처리하기엔 안성맞춤인 언어라고 자부할 수 있습니다. 



다음 포스트에서는 R에서 함수를 작성하고 사용하는 법, 데이터를 정리하고 분석하는 법, 


그리고 간단한 그래픽스 작업을 하는 법에 대하여 알아 보도록 하겠습니다.



이상 삼성소프트웨어멤버십 23-1기 엘리트회원 김윤상이었습니다.