본문 바로가기

오늘의 코딩/R

[R] 기초

1. R studio

#R스튜디오 구성

메뉴바
단축 아이콘 툴바
스크립트 창 환경 및 히스토리
R 콘솔 dir , Plots , packages , 도움말

 

 

# 코드 실행

RUN 버튼

Ctrl + Enter

실행하고 싶은 부분만 드래그하여 Ctrl+Enter

 

#R 패키지 설치하기

메뉴바 - Tools - Install Packages

package 탭에서 인스톨

install.packages("패키지 이름")

 

#설치한 패키지 불러오기

library(패키지 이름)

#도움말 불러오기

 

?패키지 이름
help(패키지이름)

 

2. R 언어와 문법

 

-벡터    -행렬     -데이터 프레임

 

#벡터 c()

벡터 데이터 구조: 하나의 스칼라 값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합 (원소: 숫자, 문자, 논리 연산자 등)

벡터는 기본적으로 열벡터가 만들어진다 ( n행 1열) 보이는건 행벡터같지만..!!!     ( [1] a b c )

명령어 c를 통해 선언할 수 있다. (c: concentration 연결 )

 

x = c(10,20,30)            # 숫자형 벡터
y = c('사과', '바나나')           # 문자형 벡터
z = c(TRUE, FALSE, TRUE)           #논리 연산자 벡터 TRUE = 1 FALSE = 0 # 논리 연산자는 모든 글자를 대문자로 기입!!

 

= 는 <- 기호로 대체해도 완전히 같은 의미를 지닌다.

x <- c(10,20,30)          

y <- c('사과', '바나나')          

z <- c(TRUE, FALSE, TRUE)  

 

#c 명령어를 이용하여 벡터와 벡터를 결합하여 새로운 벡터를 만들 수 있다.

xy <- c(x,y)

 

# 행렬 matrix(벡터 , ncol = 열의 수 , nrow = )

벡터 값들은 열(↓)을 우선 채우는 방향으로 입력된다.

 

mx = matrix(c(1,2,3,4,5,6), ncol = 2)

 

1  4

2  5

3  6

 

# rbind: 기존의 행렬(벡터)에 행(→)을 추가 , cbind : 기존의 행렬(벡터)에 열(↓)을 추가

(벡터,벡터), (행렬,벡터), (행렬,벡터) 모두 가능함.

 

cbind(c1,mx)
rbind(mx,r1)

 

#데이터 프레임 df

행렬과 다르게 각 열이 서로 다른 데이터 타입을 가질 수 있다.

 

x = c(10,20,30)
y = c('apple','banana','orange')
dataxy = data.frame(x,y)

각 행 : 하나의 관측치(개체)

각 열 : 하나의 변수

 

3. 외부 데이터 불러오기

- csv  - txt  -xls/xlsx

 

#csv 파일 불러오기

-read.table

data1 <- read.table('data1 <- read.table('파일 명' , header = T, sep = ',')

header = T : csv파일의 첫 줄을 변수명으로 지정한다.

sep = ',' : 데이터가 ,로 구분되어 있음을 명시한다-> csv 파일임을 의미

 

-read.csv

sep 을 이용하여 구분자를 명시할 필요 없음.

 

#txt 파일 불러오기

txt 파일이 구분자나 형식등을 잘 지켜서 저장되어 있어야 한다!

data1 <- read.table('data1 <- read.table('파일 명' )

sep = ',' 를 명시하지 않으면 txt 파일을 불러온다 .

 

#xls / xlsx 파일 불러오기

 

(1) 엑셀으로 파일을 열어서 csv 파일로 저장한 후, 앞서 알아본 csv 파일로 불러오기 명령어를 사용한다.

(2) R에서 지원하는 패키지를 이용하여 직접 불러온다.

 

library(RODBC)
new <- odbcConnectExcel('엑셀 파일 경로')
yourdata <- sqlFetch(new, '시트 명')
close(new)

odbcConnectExcel : 엑셀 파일 경로

sqlFetch : 엑셀 파일 중에서 열고 싶은 시트 명 입력

 

4. R의 기초 함수

-  수열 생성  - 기초적인 수치 계산 

 

# 수열 생성

- seq()   -rep()

다양한 형태의 숫자들을 반복적으로 생성해주는 수열 생성 함수

 

-seq(a,b) : a부터 b 까지 1씩 증가하는 수열의 숫자 벡터 생성   ## a:b의 형태로 사용할 수 있음!

a:b = seq(a,b)

seq(1, 11, by = 2 ) : 1부터 11까지 by(2) 만큼 증가하는 수열 생성

[1] a a+1  a+2n ... b-n  b

seq(a,b,length = m ) : a부터 b 까지 전체 수열의 개수가 m 개가 되도록 자동으로 생성  ## n = (b-a)/(m-1)

 

-rep(a, b) :  a를 b만큼 반복하는 숫자 벡터 생성

rep( a:b , n ) : a~b 를 n번 반복하는 수열 생성

 

# 기초적인 수치 계산

- + - * /      -행렬 연산   - 기술통계량

기본적인 사칙연산이 가능하다. 벡터와 벡터간 사칙연산을 수행할 때, 연산되는 벡터의 길이가 같아야 한다.

 

행렬 연산

- t() : 전치행렬

- %*% : 행렬곱

- (스칼라) * (행렬) : 스칼라곱

- solve() : 역행렬 연산

 

기술통계량

-mean() : 평균

-var() : 분산

-sd() : 표준편차

 

-sum() : 합

-median() : 중앙값

-log() : 자연로그 값

 

서로 다른 두 벡터에 대해

-cov() : 공분산

-cor() : 상관계수

Q. 공분산/ 상관계수

공분산은 X의 편차와 Y의 편차를 곱한것의 평균 / 상관계수는 공분산을 분산의 크기만큼 나눈 것

값의 분포를 나타낼 때, 분산을 사용한다.

 

확률 변수가 2개일 때, 확률 변수들의 분포를 확인하기 위해 공분산을 사용한다.

공분산은 변수간 상관관계를 파악할 때 사용한다.

가령, x 변수가 증가할 때, y 변수가 같이 증가하는지, 혹은 감소하는지, 혹은 아무 상관 없이 퍼져있는지(독립성) 확인할 수 있다.

 

공분산은 단위의 크기에 영향을 받는다는 단점이 있다. 이를 보완하는 것이 상관계수이다.

두 확률변수가 선형적이라면 상관계수는 1 이나 -1에 가까울 것이다.

두 확률변수가 독립적이라면 상관계수는 0에 가까울 것이다.

 

 

-summary() : 사분위수, 최소값, 최대값, 중앙값, 평균을 계산하여 보여줌.

 

5. R 데이터 핸들링

R은 객체지향 언어이기 때문에 변수(객체)를 불러오거나 변수 내의 요소들을 참조하는 것이 직관적이고 간단하다.

 

#벡터형 변수

b = c('a','b','c','d','e')

 

python 리스트 호출와 비슷하지만 R은 벡터의 인덱스가 1부터 시작한다

b[0] >> character(0)

b[1] >> "a"                ## n 번째 원소만 불러오기

b[-1] >> 'b','c','d','e'  ## -n : n번째 원소를 제외한 모든 원소 불러오기

b[c(2,3)] >> 'b' 'c'    ## 여러개의 원소를 불러올 때는 c명령어를 사용한다!

 

 

#행렬 / 데이터 프레임 변수

[m,n] 의 형식으로 두 개의 숫자를 사용하여 불러오고자 하는 자료의 행과 열을 지정해야 함.

특정 행이나 특정 열을 제외하고 불러올 수 있으나

특정 원소만 제외하고 불러올 수는 엇ㅂ다.

 

 

6. 반복구분과 조건문

 

#for 반복문

a = c()   

for (i in 1:9 )          #iteration
{a[i] = i*i }           #sentence

a >> [1]  1  4  9 16 25 36 49 64 81

 

# while 반복문

x = 1

while ( x<5 )     #condition
{x = x + 1 }         #sentence

 

# if else 조건문

if  (condition)   sentence
else   sentence

 

7. 사용자 정의 함수

#function 명령어

 

#R

함수 이름  =  function( x, y, z )
{ Algorithm }

 

#P

def     함수 이름    ( 인자1, 인자2, 인자3) :
                    Algorithm

 

8 기타 유용한 기능들

#paste : 입력받은 문자열을 하나로 붙여준다.

paste( a벡터 , b벡터 , seq = '-> ' )

>>a seq b

벡터 길이는 고려하지 않아도 됨.

 

#substr : 주어진 문자열에서 특정 문자열을 추출한다.

substr( " BigDataAnalysis " , 1, 4 )

>>  [1] "BigD"

concountry = c('Korea','Japen','China','Singapore')
substr(country, 1, 3)

>> [1] "Kor" "Jap" "Chi" "Sin"

 

#자료형 데이터 구조 변환

as.data.frame(a)

as.list(a)

as.matrix(a)

as.vector(a)

as.factor(a)

as.integer(a)

as.numeric(a)

as.logical(a)

...

 

# 문자열을 날짜로 변환

as.Date() 를 이용하여 날짜로 변환할 수 있다.

이때, as.Date() 함수는 yyyy-mm-dd 형식을 가정한다. 따라서 다른 형식을 처리하기 위해 format = 옵션을 사용해야 한다.

 

Sys.Date()    # 현재 날짜 반환
as.Date(x, format = "%m/%d/%Y" )

%a 요일

%b m     %m mm

%d dd

%y yy      %Y yyyy

 

#날짜를 문자열로 변환

format ( 데이터 , 포멧 )
as.character(데이터)

9 시각화

- 산점도 그래프   - 산점도 행렬  - 히스토그램과 상자그림

 

#산점도 그래프

산점도: x변수와 y 변수를 평면에 점을 찍어 표현한다. 3차원 공간에 찍을 수도 있고 기준선을 추가할 수도 있다.

# x에 대한 y 의 그래프 그리기
plot(x,y) = plot(y~x)

 

#산점도 행렬

여러가지 변수들에 대한 각각의 산점도를 한눈에 살펴볼 수 있다.

 

pairs( iris[1:4] , main = "Anderson's Iris Data -- 3 species",
+           pch = 21, bg = c("red", "green", "blue")[unclass(iris$Species)] )

main : 그래프 이름

pch : 그래프 상에 찍히는 점의 모양 변경

bg : 색상 지정

[iris $ Species ]  : 데이터셋 $ 변수 명

 

 

# 히스토그램과 상자그림

 

#히스토그램
hist(data , prob = T )
#상자 그림
boxplot(data)

prob = T  : 상대 도수 표시

'오늘의 코딩 > R' 카테고리의 다른 글

[R] R 개요  (0) 2020.02.17
우분투18에 R 설치하기  (0) 2020.02.17