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 설치 안된다 . ---_____--- ;