언어/R +2

R study

언어/R2017. 12. 28. 23:25

2017-12-27

수학 통계


평균 = (변량의 총합)/(변량의 개수)

_____________


R의 역사 

:AT&T에서 개발된 S언어의 오픈소스 버전으로 약 20년이 넘는 역사를 가진 통계 컴퓨팅(statiscal computing)언어이며

데이터 시각화를 위한 매우 훌륭한 환경


특징

[ㄱ] 함수형 언어의 특징 덕분에 간결한 코드를 구현할 수 있음 

[ㄴ] 병령활 처리 전환이 쉬운 장점

[ㄷ] 인터렉티브 쉘을 제공

[ㄹ] 무료다 


정의

[ㄱ] R은 데이터를 다루는 언어 ( 데이터 획득과 조작(munging), 모델링, 시각화 등 )

[ㄴ] R은 함수형 언어인 Lisp 에서 영향을받음

[ㄷ] 인터프리터 언어

[ㄹ] 대소문자 구분 

[ㅁ] 방향키로 이전에 했던 작업 수행 가능

[ㅂ] q() 사용하면 R 종료

[ㅅ] # : 주석 (* 파이썬도 동일)


현재 많이 사용하고 있는 R 개발 툴

[ㄱ] RStudio

[ㄴ] RKward

[ㄷ] Eclipse with StatET

[ㄹ] Tinn R


R 명령어

=> "서버에서 해당 패키지를 다운로드 받아 설치"

> install.packages("KoNLP")


=> "현재 패키지가 어떤 것들이 설치 되어 있는지 확인하고 싶다면"  

> installed.packages()


=> "업데이트 여부를 체크!!"

> old.packages()


=> "체크와 더블우 업데이트까지 설치하는 명령어"

> update.packages()


=> "help 명령어"

> help.search("이름")

> RSiteSearch("이름")


> install.packages("이름")

> library(이름)

> findFn("이름")

================================================================

값의 지정

 x <- 1

 x = 1

 


R 에서 주석은? 

R 기본 연산

[1] '+'       :: 더하기 ex) 1+2

[2] '-'       :: 빼기  ex) 1-2

[3] '*'       :: 곱하기 ex) 3*4

[4] '/'       :: 나누기 ex) 4/3

[5] '%/%      :: 정수 나누기 

[6] '%%'      :: 나머지 

[7] '^', '**' :: 승수 

> 10 + 20

[1] 30


> 45 %/%6

[1] 7


> 45 / 6

[1] 7.5


> 1/4

[1] 0.25

================================================================

R의 기본 자료형 ( 미리 보기 )

- 벡터 (vector) : 한가지 데이터형만 저장할 수 있는 자료형 구조

- 리스트 (list) : 벡터와 비슷하게 자료를 저장할 수 있는 자료형 구조이지만 여러종류의 데이터형을 리스트 형태로 저장 할 수 

있는 구조 

- 배열과 행렬

: 배열 

  => 주로 3차원 이상의 데이터를 다룰 때 사용

: 행렬

  => 수학에서의 행렬과 동일한 성격을 가지고 있는 데이터 구조

  => 2차원 벡터를 다룸

  => 벡터와는 차원 속성의 유무만 다르고 나머지는 동일

: 데이터 프레임 ( python pandas ) 

================================================================

문자형

- 문자를 처리할때는 쌍따옴표(" ") 나 홑 따옴표(' ')를 사용해야 함

- 어떤 데이터가 숫자형인지 문자형인지 알수 없다면 class() 함수 사용 

================================================================

TRUE / FALSE 값 (진리값)

- 데이터들을 비교하여 참 일 경우 => true // 거짓일 경우 => false 반환

- & : 양쪽데이터가 모두 참일 경우 => true , 곱하기로 간주 ( and )

- | : 한가지만 참이어도 결과를 true, 더하기로 간주(or)

- ! : 해당 데이터가 아닌 것, not

- 0(false)을 제외한 나머지는 참(true)

================================================================

생성한 변수 확인 및 삭제

- objects() : 자신이 생성한 모든 변수 확인 

- objects(all.names=T) : 숨김 속성의 변수까지 모두 확인가능

- rm(변수명) : 특정변수 삭제 가능

- rm(list=ls()) : 모든 변수 삭제

================================================================

NA / NULL 형  -> 뒤로 가서 천천히 살피자 

- NA (Not Applicable 또는 Not Available) : 정해진 범위 안에 있는 값이 아니라서 사용할 수 없는 경우 

================================================================

(* RScript 에서 전체 실행할 경우 블록을 다 잡아야 한다.)


실습 

x <- c(1,2,3)

y <- c(2,3,4)

 

print (x*y) :=> [1] 20 40 60



반복문 

-> for문

ex) 

for(value in data) {

print (value)

}


-> while문

ex)

n = 10

while (n != 0) {

    print (n)

    n = n-1

}


-> repeat (c언어에서 do-while 문과 원리가 비슷)

i = 1


repeat{

    if (i == 1) break

    print (i)

}


실습 ( 반복문을 이용해서 구구단을 짜보자 )

for (i in 2:9) {

    for (j in 1:9) {

        print(paste(i, "X", j," = ", i*j))

    }

}


combine 함수 : 긴 벡터를 생성하기 위해 

> vector_1 <- c(1,2,3,4,5)

> vector_2 <- c(5,4,3,2,1)

> s_vec <- vector_1 + vector_2

> s_vec

[1] 6 6 6 6 6

> vector_1 * vector_2

[1] 5 8 9 8 5

> vector_1 / vector_2

[1] 0.2 0.5 1.0 2.0 5.0

> vector_1 - vector_2

[1] -4 -2  0  2  4


길이가 다른 벡터들의 연산의 결과는 어떻게 될까?

case 1)

v <- 1 + c(1,2,3,4,5)

print (v)

[1] 2 3 4 5 6

=======================================

case 2)

w <- c(1,2) + c(1,2,3,4,5)

print (w)


경고메시지(들): 

In c(1, 2) + c(1, 2, 3, 4, 5) :

  두 객체의 길이가 서로 배수관계에 있지 않습니다

=======================================

case 3)

k <- c(1,2) + c(1,2,3,4,5,6)

print (k)

[1] 2 4 4 6 6 8


(* 결론)

: 길이가 짧은 벡터가 길이가 긴 벡터의 길이의 약수가 되어야만 정상적인 연산 가능 

=======================================

함수 (Function)


R 그래프 종류 

: ggplot2, boxplot


ggplot2 

:=> install.packages("tidyverse")

:=> library(tidyverse) # "tidyverse" 패키지를 사용하겠다는 선언 파이썬에서 import 하는 부분이라고 보면 되겠다.

:=> 



 설치 패키지 

[#] python ggplot2

: python에 ggplot2 설치시 => numpy, scipy, pandas,  matplotlib

파이썬에서 ggplot2 를 사용할 시에 반드시 파이썬2 대로 사용하길 바란다. 파이썬3 설치 안된다 .  ---_____--- ;

'언어 > R' 카테고리의 다른 글

R의 FOR 문  (0) 2017.05.03

R의 FOR 문

언어/R2017. 5. 3. 11:20

> t1 <- c(1, 2, 3, 4)



> for(i in 1:4) {

+     print (t1[i])

+ }

[1] 1

[1] 2

[1] 3

[1] 4

'언어 > R' 카테고리의 다른 글

R study  (0) 2017.12.28