SlideShare una empresa de Scribd logo
1 de 61
R 기초

한림대학교 금융정보통계학과
    이 윤 환
R 설치
• Windows 용 다운로드
  o http://www.r-project.org
  o 좌측의 “CRAN” 클릭




R 입문                                  이윤환, yoonani72@gmail.com
R 설치
  o 대한민국(Korea)의 http://statlab.snu.ac.kr/R/ 클릭




R 입문                                              이윤환, yoonani72@gmail.com
R 설치
  o Download for Windows 클릭
     • 다른 OS 사용자는 해당 OS 명 클릭




R 입문                           이윤환, yoonani72@gmail.com
R 설치
  o Base 클릭




R 입문                 이윤환, yoonani72@gmail.com
R 설치
  o Download R x.xx.x for Windows 클릭
  o 이후 다운로드 받아 실행하면 바로 설치 된다.




R 입문                                   이윤환, yoonani72@gmail.com
R 실행하기
• 프로그램 그룹에서 R을 찾고 그 아래의 “R x.xx.x” 클릭




R 입문                       이윤환, yoonani72@gmail.com
R 화면




R 입문          이윤환, yoonani72@gmail.com
계산기로써의 R
• 산술 연산
  o +(더하기), -(빼기), *(곱하기), /(나누기), ^ (승수)




R 입문                                        이윤환, yoonani72@gmail.com
계산기로써의 R
• 논리 연산 : 결과를 참(TRUE)과 거짓(FALSE)으로 갖는
  연산
연산자                       설명

 <     Less than, binary

 >     Greater than, binary

 ==    Equal to, binary

 >=    Greater than or equal to, binary

 <=    Less than or equal to, binary

 &     And, binary, vectorized

&&     And, binary, not vectorized

 |     Or, binary, vectorized

 ||    Or, binary, not vectorized




R 입문                                      이윤환, yoonani72@gmail.com
변수와 상수
• 상수
  o 숫자 2의 의미가 변할 수 있을까?
  o 1, 2, 3 … 등과 R의 문자열인 “a”, “abc”… 등은 그 의미가 숫자와 문자로 정해져
    있다.
  o 즉 표기 자체의 의미가 변하지 않는 것을 상수라고 하고 숫자와 큰 따옴표로 둘러
    쌓여진 문자들은 상수로 사용된다.

• 변수
  o 큰 따옴표로 둘러싸여지지 않은 알파벳은 자료를 담는 그릇이라 생각하자.
  o 이 그릇은 대입연산자(<-, 부등호와 Dash)을 통해 값을 넣는다.
  o 변수에는 상수값을 넣을 수도 있고 또 다른 변수를 넣을 수도 있다.




R 입문                                   이윤환, yoonani72@gmail.com
변수와 상수
• 다음 상황에서 값은 뭐가 나올 것으로 생각하십니까?




R 입문                  이윤환, yoonani72@gmail.com
Vector : 자주 사용되는 자료형
• x <- 5 의 예에서 x는 5라는 값 하나를 갖는 스칼라(Scalar) 자료
• 학생들의 키를 조사한다고 할 경우 학생 수 만큼 변수를 만들어서 값
  을 입력하는 것은 어리석은 일
• 하나의 변수에 모든 학생들의 변수를 넣어 보관한다면 좀 더 쉽게 자
  료를 관리할 수 있다.
• 함수 c(…)
  o R Console 에서 help(c ) 라고 입력해 보자




R 입문                                  이윤환, yoonani72@gmail.com
Vector
• 다음 예를 살펴보자




R 입문                    이윤환, yoonani72@gmail.com
Vector 연산
• Vector는 스칼라와 연산시 스칼라 값이 Vector 의 각 원소와 연산을
  한다.
• Vector 끼리의 연산은
  o 먼저 각 Vector의 원소의 개수가 같아야 한다.




R 입문                               이윤환, yoonani72@gmail.com
Vector 연산
  o Vector의 원소 개수가 서로 다를 경우에는 서로 배수의 관계에 있을 때 계산 가능




R 입문                               이윤환, yoonani72@gmail.com
다른 방법으로 Vector 만들기
• 연산자 : “:”




R 입문                이윤환, yoonani72@gmail.com
다른 방법으로 Vector 만들기
• 함수 : seq(), rep()
seq(
  from = 1,
  to = 1,
  by = n),
  length.out = NULL,
          ...
)




 R 입문                  이윤환, yoonani72@gmail.com
다른 방법으로 Vector 만들기
• 함수 : seq(), rep()
rep(
  x = vector,
  (times | each) = n,
)




 R 입문                   이윤환, yoonani72@gmail.com
Vector 특정 원소 추출
• Vector명 뒤에 대괄호([]) 쌍으로 특정 원소를 추출한다.
  o 대괄호 값이 양수일 경우 : 해당 위치의 값을 가져온다.
  o 대괄호 값이 음수일 경우 : 해당 위치의 값을 제외하고 가져온다.
  o 대괄호에 논리연산이 들어갈 경우 : 해당 연산에 맞는 값을 가져온다.




R 입문                              이윤환, yoonani72@gmail.com
Arrays and matrices
• Array
   o 배열에 대한 수학적 의미와 비슷하게 생각하자.
      • n 차원을 갖고 있다
   o 배열의 생성
      • dim : 속성으로 차원 vector를 갖는다.




 1500개의 원소를
                                        z는 3차원을 가지며
   갖는 vector
                              1차원 : 3, 2차원 : 5, 3차원 : 100개의 원소
                                         3 * 5* 100 = 1,500




 R 입문                                    이윤환, yoonani72@gmail.com
Arrays and matrices
     o 배열의 생성
        • array() 이용

array(
   data : vector,
   dim : dimension vector,
   [dimnames = NULL]
       : 차원의 이름 list
)




  R 입문                               이윤환, yoonani72@gmail.com
Arrays and matrices
• Matrix
   o 배열의 특별한 경우로 행과 열을 갖는 (즉, 2차원 배열) 배열을 Matrix 라 한다.
   o Matrix 생성
      • matrix() 함수 이용

matrix(
  data : vector,
  nrow = 1, ncol = 1,
        : 행과 열의 수
  byrow = FALSE,
        : data를 행단위로
          읽을지 여부
  [dimnames = NULL]
        : 차원의 이름 list
)




 R 입문                                  이윤환, yoonani72@gmail.com
Arrays and matrices
  •    Matrix 생성
        o cbind(), rbind() 이용
             • cbind()는 주어진 Vector 혹은 Matrix를 열로 묶고 rbind()는 행으로 묶는
                다.




R 입문                                           이윤환, yoonani72@gmail.com
Arrays and matrices
• Array indexing
   o 앞선 3차원 배열의 경우
   o 배열명[1st dim, , ]
      • Ex) > z[1, ,]    ; 1차원의 인덱스가 1인 원소 출력
                        2차원이 5, 3차원이 100이므로 원소의 개수는 500
                        1차원의 인덱스를 1로 고정한 나머지는
                        2차원 배열처럼 출력




 R 입문                                     이윤환, yoonani72@gmail.com
Arrays and matrices
  o 배열명[1st dim, 2nd dim, ]
     • Ex) > z[1, 1,]          ; 1차원의 인덱스가 1, 2차원의 인덱스가 1인 원소 출
       력
                              3차원의 원소의 개수는 100이므로 100개 출력




R 입문                                           이윤환, yoonani72@gmail.com
Arrays and matrices
  o 배열명[1st dim, 2nd dim, 3rd dim]
     • Ex) > z[1, 1, 1]       ; 1차원의 인덱스가 1, 2차원의 인덱스가 1,
                           3차원의 인덱스가 1인 스칼라 출력




R 입문                                        이윤환, yoonani72@gmail.com
Arrays and matrices
  o Index Matrices
      • Array의 특정 원소의 위치를 값으로 갖는 배열
      • 특히 2차원 배열 즉, matrix에 값을 줄 때 각 행 별로 첫 열에 행, 두번째 열에
        열 index를 부여한다.




R 입문                                    이윤환, yoonani72@gmail.com
Data Frame
• Matrix의 경우 서로 다른 자료형을 넣을 수 없다.
• 실제 자료들은 속성(열) 별로 서로 다른 자료형이 한데 섞여 있는 경
  우가 많으므로 이럴 경우 Data Frame을 사용하면 유용하다.
• data.frame 함수
  o 서로 다른 자료형 벡터에 대해 cbind() 한 효과와 유사




R 입문                                    이윤환, yoonani72@gmail.com
Data Frame
• Indexing
   o Dataframe명$열이름
   o Dataframe명[[열 번호]]
   o Matrix와 같이 표현




 R 입문                                  이윤환, yoonani72@gmail.com
Package 설치와 사용
• R Package
  o R 기능을 확장하는 기능 모둠
  o R을 사용하는 사용자들이 제작하고 등록한 함수, Data 등으로 구성

• Package 설치와 사용
  o R Console 창에 다음과 같이 입력하자 (alr3 라는 package 설치)
      > install.packages("alr3")
  o 옆에 보이는 화면과 같이 어디서 해당 Package를
    다운로드 받을 것인지 사용자가 선택하도록 한다.
      • Korea 를 선택하자
  o 방금 설치한 alr3 를 사용하기 위해 다음과 같이 입력하자
      > library(alr3)
  o alr3가 갖고 있는 자료 fuel2001이 있는지 확인하자.
      > fuel2001
       Drivers FuelC Income Miles MPC    Pop Tax
      AL 3559897 2382507 23471 94440 12737.00 3451586 18.00
      …


R 입문                                             이윤환, yoonani72@gmail.com
작업공간 설정 : setwd()
• 다음과 같이 C 드라이브에 “R_work”라는 디렉토리를 만들자.




• R Console에서 다음과 같이 입력해 보자.
  > setwd(“c:R_work”)



R 입문                           이윤환, yoonani72@gmail.com
Excel 파일의 import
• 다음 주소를 브라우저 창에 입력하고 다운로드를 클릭하
  여 파일을 앞선 만든 “c:R_work”에 저장하자.
  o http://j.mp/KXsVuE




R 입문                           이윤환, yoonani72@gmail.com
Excel 파일의 import
• 다운로드 받은 fuel2001.xlsx 파일을 Excel로 연다.
  o Excel 자체를 읽어들이는 xlsReadWrite 같은 Package도 있지만 Excel에서 자료
    를 일반 Text로 변환하여 R에서 불러들인다.

• “파일” 메뉴의 “다른 이름으로 저장”을 클릭




R 입문                                     이윤환, yoonani72@gmail.com
• 파일 형식을 “CSV 쉼표로 분리(.csv)” 선택




R 입문                        이윤환, yoonani72@gmail.com
• 파일 이름은 “fuel2001.csv”가 되도록 입력하고 저장
  o 이후에 나오는 메시지는 현재 쉬트만 저장 가능하다는 알림과 엑셀의 기능이 빠진
    순수 텍스트로 저장된다는 경고 메시지로 모두 “예”를 클릭한다.




R 입문                            이윤환, yoonani72@gmail.com
• 저장된 파일을 메모장 등으로 열어보자.




• 앞서 엑셀에 저장된 내용을 행구분은 줄바꿈으로 그리고
  열 구분은 쉼표(Comma)로 한 파일을 csv 파일이라고 한
  다.
  o 값들중에 쉼표를 포함하는 값은 큰 따옴표 등으로 묶는다.


R 입문                             이윤환, yoonani72@gmail.com
• R에서 방금 생성한 fuel2001.csv 파일을 불러오기 위해
  다음과 같이 입력하자
  > f2001 <- read.csv("fuel2001.csv", header=T)
  o fuel2001.csv 를 csv 포맷에 맞춰 읽어온다.
  o header = T : fuel2001.csv 파일은 첫 행에 제목 줄이 있다. 즉, 데이터로 인식하지
     말고 열 이름으로 인식하라
  o 읽어온 자료는 f2001 이라는 이름으로 저장하라.

• 제대로 읽어 왔는지 다음과 같이 확인해 보자.




R 입문                                      이윤환, yoonani72@gmail.com
R Graphics
Graphics Windows
• win.graph()             • dev.off()
   o 그래픽 창의 활성화              o 현재 장치를 비활성화(끈다)
   o Ex                        한다.
       • win.graph()      • graphics.off()
       • win.graph()         o 모든 그래픽 장치를 끈다.
       • win.graph()
                          • par() 함수
• dev.list()                 o   mfrow, mfcol
   o 활성화된 장치의 리스트를           o   bg : 바탕화면 색깔
     열람한다.
                             o   fig : 분할된 창의 크기
• dev.set(which=n)           o   new : 기본값 ‘F’, 새로 고수
   o 지정한 n 장치를 활성화 한             준 그래픽 함수 호출시 새로
     다.                          그릴 것인지 결정
• dev.cur()
   o 현재 장치를 보여준다.
고수준 그래픽 함수
• 저수준 그래픽 함수 vs 고수준       • Ex
  그래픽 함수                  > win.graph()
   o 그림이나 그래프는 점, 선, 면    > x1 <- 1:5
     으로 분해할 수 있는데 R은 이    > y1 <- x1^2
     런 기초적인 기능 외에 그래프
     의 여백, 좌표축등을 정의하는
                          > z1 <- 5:1
     등 그래프를 그리는 기본적인      > mat1 <- cbind(x1, y1, z1)
     함수는 저수준 그래픽 함수라      > par(mfrow=c(2, 3))
     부르고 여러가지 저수준 그래      > plot(y1, main=“using index”)
     픽 함수를 모아 하나의 완성된     > plot(x=x1, y=y1, main=“x1^2”)
     그래프를 그리는 함수는 고수      > plot(mat1, main=“using
     준 그래픽 함수라 부른다.       matrix”)
• plot 함수                 > plot(x1, y1, type=“l”)
   o 가장 대표적인 함수로 데이터      > plot(x1, y1, type=“h”)
     객체를 x-y 좌표에 그래프로 나   > plot(x1, y1, type=“n”)
     타낸다.
고수준 그래픽 함수
     • type 인수
       o   “p” : 점(points)
       o   “l” : 선(lines)
       o   “b” : 점과 선
       o   “c” : “b”에서 점이 빠진것
       o   “o” : 겹침 점과 선
       o   “h” : 수직선(high density)
       o   “s” : 수평선 우선의 계단모양
       o   “S” : 수직선 우선의 계단 모양
       o   “n” : 출력하지 않음
저수준 그래픽 함수
• 점을 만드는 함수 points                           • 선을 그리는 함수
  o pch : 점의 모양                                o abline : 좌표에 직선을 그린다.
       • 1-25는 정해진 모양이며 그 이                       • 기울기 b와 절편 a를 지나는
         후는 ASCII 코드에 의한 점 모                        직선
         양                                        • x축에 평행이고 y의 값이 h인
  o Ex                                              직선
  > x <- rep(1:5, rep(5, 5))                      • y축에 평행이고 x의 값이 v인
  > y <- rep(5:1, 5)                                직선
  >                                               • Ex
  plot(1:5, type=“n”, xlim=c(0, 7.5), ylim        > cars[1:5, ]
  =c(0.5, 5.5))                                   > z <- lm(dist ~ speed, data=cars)
  > points(x, y, pch=1:25, cex=2.5)               > z$coef
                                                  > plot(cars, main=“abline”)
  > text(x-
                                                  > abline(h=20)
  0.4, y, labes=as.character(1:25), cex
  =1.5)                                           > abline(v=20)
                                                  > abline(a=40, b=4)
                                                  > abline(z, lty=2, lwd=2)
저수준 그래픽 함수
• lines                               • arrows
  o 좌표의 점들을 이어서 선을 그                    o 화살표를 그린다.
    리는 함수                               o Ex
  o Ex                                  > plot(1:9, type=“n”, axes=F)
   > plot(0:6, 0:6, type=“n”)           >
   > lines(c(1, 3), c(6, 6), lty=1)     arrows(1, 9, 4, 9, angle=30, length=0.
   > lines(c(1, 3), c(5, 5), lty=2)     25, code=2)
   > lines(c(1, 3), c(4, 4), lty=3)     >
                                        arrows(1, 8, 4, 8, length=0.5, code=0)
   > lines(c(1, 3), c(3, 3), lty=4)
                                        >
   > lines(c(1, 3), c(2, 2), lty=5)     arrows(1, 7, 4, 7, angle=90, length=0.
   > lines(c(1, 3), c(1, 1), lty=6)     1, code=1)
                                        >
                                        arrows(1, 6, 4, 6, angle=120, code=3)
저수준 그래픽 함수

• segments                                > plot(x, y)
                                          > s <- seq(length(x)-2)
  o 좌표 점들을 분할해서 출력할                       >
    수 있으며 단일 선분이 아니라                      segments(x[s], y[s], x[s+3], y[s+3], lt
    벡터로 구성된 여러 점들을 한                      y=1:3)
    화면에 출력한다.                             > box(which=“outer”)
  o Ex
  > x <- runif(12); y <- rnorm(12)
  > i <- order(x); x <- x[i]; y <- y[i]
  > par(mfrow=c(2,1))
  > plot(x, y)
  > s <- seq(length(x)-1)
  > segments(x[s], y[s], x[s+2], >
  y[s+2], lty=1:2)
고수준 그래픽 함수 II
• barplot                          o width
   o 막대그래프를 생성한다.                      • 막대의 두께 지정
   o height                        o space
       • 막대그래프로 그릴 대상 자료               • 막대간의 간격
         객체를 지정하며 인수값으로            o horiz
         벡터나 행렬이 올 수 있다.               • TRUE이면 수평으로 FALSE
       • beside가 FALSE이면 열의 수            이면 수직으로
         는 막대의 크기, 행의 수는 각         o density
         막대에서의 마디의 크기
       • beside가 FALSE이면 그룹지           • 막대기둥 내부를 채우는 사선
         어 병열로 배열된 형태                    의 밀도
   o beside                        o angle
       • 벡터형 출력 여부                     • density를 사용할 때 사선의 각
                                         도
       • 4 by 5 행렬의 경우
            o TRUE : 20개의 기둥
                                   o col
            o FALSE : 4개의 마디를 갖는       • 막대나 막대 성분을 위한 색
              5개의 기둥                     지정
                                   o border
                                       • 테두리 색
고수준 그래픽 함수 II
• Ex
> bar.x <- round(runif(12)*50)
> bar.y <- matrix(bar.x, ncol=3, byrow=T)
> par(mfrow=c(2,2))
> barplot(bar.x, horiz=T, density=5)
> barplot(bar.x, density=15, angle=135)
> barplot(bar.x, col=rainbow(length(bar.x)))
>
barplot(bar.x, border=“red”, col=c(“lightblue
”, “mistyrose”, “lightcyan”, “lavender”))
단순선형회귀분석
• 다음은 책의 페이지 수와 가격의 자료이다.
     Pages     Prices     Pages     Prices
         637         27       496         20
        336         15       673         25
        336         14       562         24
        430         15       229         10
        164         9.5      316         13
        533         20       217          8
        529         22       296         12
        509         20        115         7
        419         16       257         11
        596         24       649         22
자료 가져오기

> bnp <- read.csv("bookNprice.csv", header=T)
> bnp
  Pages Prices
1 637 27.0
2 336 15.0
3 336 14.0
…
18 115 7.0
19 257 11.0
20 649 22.0
> attach(bnp)
Plot

> plot(Pages, Prices)
회귀계수의 추정 - 최소제곱법

  > lms <- lm(Prices ~ Pages)
  > lms

  Call:
  lm(formula = Prices ~ Pages)

  Coefficients:
  (Intercept)     Pages
     2.19108    0.03503

   절편                     기울기
    ß0                     ß1
회귀계수로부터의 회귀직선

> plot(Pages, Prices)
> abline(lms$coef)
회귀의 적합도
회귀의 분산분석

                                 회귀(모형)

> summary(aov(lms))
      Df            Sum Sq Mean Sq     F value    Pr(>F)
Pages     1   681.78 681.78      332.09 4.769e-13 ***
Residuals 18         36.95  2.05
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘



                 오차
회귀분석에서의 추론
> summary(lms)

Call:
lm(formula = Prices ~ Pages)

Residuals:
   Min    1Q Median     3Q Max
-2.9228 -0.7875 -0.1059 0.9603 2.4975
                                                          절편
Coefficients:                                              ß0
        Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.191079 0.859491 2.549 0.0201 *
Pages       0.035026 0.001922 18.223 4.77e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’                기울기
           0.05 ‘.’ 0.1 ‘ ’ 1                              ß1

Residual standard error: 1.433 on 18 degrees of freedom
Multiple R-squared: 0.9486, Adjusted R-squared: 0.9457
F-statistic: 332.1 on 1 and 18 DF, p-value: 4.769e-13
잔차 분석
• 적합값 : fitted
 > fitted(lms)
       1    2     3     4     5     6     7
 24.502460 13.959720 13.959720 17.252137 7.935296 20.859786 20.719683
       8    9    10     11    12     13     14
 20.019169 16.866854 23.066406 19.563834 25.763386 21.875532 10.211968
      15    16    17     18     19    20
•13.259205: 9.791659 12.558691 6.219036 11.192688 24.922769
    잔차 resid

> resid(lms)
       1     2      3        4     5      6
 2.49753964 1.04028032 0.04028032 -2.25213703 1.56470357 -0.85978584
       7     8      9       10     11      12
 1.28031703 -0.01916864 -0.86685415 0.93359402 0.43616567 -0.76338616
      13     14      15       16     17      18
 2.12446838 -0.21196800 -0.25920535 -1.79165941 -0.55869101 0.78096368
      19     20
-0.19268807 -2.92276896
> plot(fitted(lms), resid(lms))




0 주변으로 몰려있
   어야 한다.
> qqnorm(resid(lms), ylim=c(-3, 3), xlim=c(-3, 3))




대각선 주변으로 몰
 려있어야 한다.

Más contenido relacionado

La actualidad más candente

R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작Terry Cho
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째Jaeseok Park
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법Terry Cho
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째Jaeseok Park
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 
파이썬 자료형 발표
파이썬 자료형 발표파이썬 자료형 발표
파이썬 자료형 발표joonjhokil
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째Jaeseok Park
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편Yong Joon Moon
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdolsseungdols
 
R을 이용한 데이터 분석
R을 이용한 데이터 분석R을 이용한 데이터 분석
R을 이용한 데이터 분석simon park
 
Binary Search
Binary SearchBinary Search
Binary Searchskku_npc
 

La actualidad más candente (20)

R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째
 
R_datamining
R_dataminingR_datamining
R_datamining
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
Power bi
Power biPower bi
Power bi
 
Python
PythonPython
Python
 
Python 스터디
Python 스터디Python 스터디
Python 스터디
 
강의자료3
강의자료3강의자료3
강의자료3
 
파이썬 자료형 발표
파이썬 자료형 발표파이썬 자료형 발표
파이썬 자료형 발표
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
 
R을 이용한 데이터 분석
R을 이용한 데이터 분석R을 이용한 데이터 분석
R을 이용한 데이터 분석
 
Binary Search
Binary SearchBinary Search
Binary Search
 
Example
ExampleExample
Example
 

Destacado

단순선형회귀분석예제
단순선형회귀분석예제단순선형회귀분석예제
단순선형회귀분석예제Yoonwhan Lee
 
13.상관과 회귀
13.상관과 회귀13.상관과 회귀
13.상관과 회귀Yoonwhan Lee
 
00.통계학입문
00.통계학입문00.통계학입문
00.통계학입문Yoonwhan Lee
 
09.통계적가설검정
09.통계적가설검정09.통계적가설검정
09.통계적가설검정Yoonwhan Lee
 
03.기술통계 자료의 중심과 퍼진정도
03.기술통계 자료의 중심과 퍼진정도03.기술통계 자료의 중심과 퍼진정도
03.기술통계 자료의 중심과 퍼진정도Yoonwhan Lee
 
02.자료다루기
02.자료다루기02.자료다루기
02.자료다루기Yoonwhan Lee
 
10.단일표본 평균 모비율
10.단일표본 평균 모비율10.단일표본 평균 모비율
10.단일표본 평균 모비율Yoonwhan Lee
 
12.세표본 이상의 평균비교
12.세표본 이상의 평균비교12.세표본 이상의 평균비교
12.세표본 이상의 평균비교Yoonwhan Lee
 
11.두표본의 평균비교
11.두표본의 평균비교11.두표본의 평균비교
11.두표본의 평균비교Yoonwhan Lee
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”Jaimie Kwon (권재명)
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루Jaimie Kwon (권재명)
 
OneTick and the R mathematical language, a presentation from R in Finance
OneTick and the R mathematical language, a presentation from R in FinanceOneTick and the R mathematical language, a presentation from R in Finance
OneTick and the R mathematical language, a presentation from R in FinanceOneMarketData, LLC
 
표본들의 분포
표본들의 분포표본들의 분포
표본들의 분포Yoonwhan Lee
 
(마더세이프라운드)임상연구에 필요한 통계 분석
(마더세이프라운드)임상연구에 필요한 통계 분석 (마더세이프라운드)임상연구에 필요한 통계 분석
(마더세이프라운드)임상연구에 필요한 통계 분석 mothersafe
 
통계적방법론발표Ppt Kmlikejy
통계적방법론발표Ppt Kmlikejy통계적방법론발표Ppt Kmlikejy
통계적방법론발표Ppt Kmlikejyhyun
 
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김승욱 유
 

Destacado (20)

단순선형회귀분석예제
단순선형회귀분석예제단순선형회귀분석예제
단순선형회귀분석예제
 
13.상관과 회귀
13.상관과 회귀13.상관과 회귀
13.상관과 회귀
 
00.통계학입문
00.통계학입문00.통계학입문
00.통계학입문
 
09.통계적가설검정
09.통계적가설검정09.통계적가설검정
09.통계적가설검정
 
05.확률
05.확률05.확률
05.확률
 
03.기술통계 자료의 중심과 퍼진정도
03.기술통계 자료의 중심과 퍼진정도03.기술통계 자료의 중심과 퍼진정도
03.기술통계 자료의 중심과 퍼진정도
 
02.자료다루기
02.자료다루기02.자료다루기
02.자료다루기
 
07.표본분포
07.표본분포07.표본분포
07.표본분포
 
10.단일표본 평균 모비율
10.단일표본 평균 모비율10.단일표본 평균 모비율
10.단일표본 평균 모비율
 
12.세표본 이상의 평균비교
12.세표본 이상의 평균비교12.세표본 이상의 평균비교
12.세표본 이상의 평균비교
 
11.두표본의 평균비교
11.두표본의 평균비교11.두표본의 평균비교
11.두표본의 평균비교
 
08.추정
08.추정08.추정
08.추정
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루
 
OneTick and the R mathematical language, a presentation from R in Finance
OneTick and the R mathematical language, a presentation from R in FinanceOneTick and the R mathematical language, a presentation from R in Finance
OneTick and the R mathematical language, a presentation from R in Finance
 
표본들의 분포
표본들의 분포표본들의 분포
표본들의 분포
 
(마더세이프라운드)임상연구에 필요한 통계 분석
(마더세이프라운드)임상연구에 필요한 통계 분석 (마더세이프라운드)임상연구에 필요한 통계 분석
(마더세이프라운드)임상연구에 필요한 통계 분석
 
통계적방법론발표Ppt Kmlikejy
통계적방법론발표Ppt Kmlikejy통계적방법론발표Ppt Kmlikejy
통계적방법론발표Ppt Kmlikejy
 
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김
신세계 마케팅전략 (No.1)(브랜딩제안)_뇌새김
 

Similar a 통계자료 분석을 위한 R

파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기Yong Joon Moon
 
데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은ETRIBE_STG
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약Sung Yub Kim
 
Transliteration English to Korean
Transliteration English to KoreanTransliteration English to Korean
Transliteration English to KoreanHyunwoo Kim
 
Python datatype
Python datatypePython datatype
Python datatype건희 김
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약고포릿 default
 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기종빈 오
 
텐서플로우-기초 프로그래밍
텐서플로우-기초 프로그래밍텐서플로우-기초 프로그래밍
텐서플로우-기초 프로그래밍jdo
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능도형 임
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pcaJinhwan Suk
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2KoChungWook
 
알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder홍배 김
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라Jong Gook Bae
 

Similar a 통계자료 분석을 위한 R (20)

3주차 스터디
3주차 스터디3주차 스터디
3주차 스터디
 
파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기
 
데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
Transliteration English to Korean
Transliteration English to KoreanTransliteration English to Korean
Transliteration English to Korean
 
R project_pt1
R project_pt1R project_pt1
R project_pt1
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
Python datatype
Python datatypePython datatype
Python datatype
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약
 
Programming java day2
Programming java day2Programming java day2
Programming java day2
 
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
 
텐서플로우-기초 프로그래밍
텐서플로우-기초 프로그래밍텐서플로우-기초 프로그래밍
텐서플로우-기초 프로그래밍
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pca
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2
 
알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라
 

Más de Yoonwhan Lee

14.범주형자료분석
14.범주형자료분석14.범주형자료분석
14.범주형자료분석Yoonwhan Lee
 
Smart work 자료 1
Smart work 자료 1Smart work 자료 1
Smart work 자료 1Yoonwhan Lee
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기Yoonwhan Lee
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정Yoonwhan Lee
 
에버노트와 드롭박스 설치
에버노트와 드롭박스 설치에버노트와 드롭박스 설치
에버노트와 드롭박스 설치Yoonwhan Lee
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 
HTML Form과 배열
HTML Form과 배열HTML Form과 배열
HTML Form과 배열Yoonwhan Lee
 
Android 기초 앱 사용
Android 기초 앱 사용Android 기초 앱 사용
Android 기초 앱 사용Yoonwhan Lee
 
확률변수와 분포함수
확률변수와 분포함수확률변수와 분포함수
확률변수와 분포함수Yoonwhan Lee
 
기초 확률 관련
기초 확률 관련기초 확률 관련
기초 확률 관련Yoonwhan Lee
 

Más de Yoonwhan Lee (15)

06.확률분포
06.확률분포06.확률분포
06.확률분포
 
14.범주형자료분석
14.범주형자료분석14.범주형자료분석
14.범주형자료분석
 
Smart work 자료 1
Smart work 자료 1Smart work 자료 1
Smart work 자료 1
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기
 
Class10
Class10Class10
Class10
 
MySQL과 PHP
MySQL과 PHPMySQL과 PHP
MySQL과 PHP
 
MySQL 기초
MySQL 기초MySQL 기초
MySQL 기초
 
추정
추정추정
추정
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정
 
에버노트와 드롭박스 설치
에버노트와 드롭박스 설치에버노트와 드롭박스 설치
에버노트와 드롭박스 설치
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 
HTML Form과 배열
HTML Form과 배열HTML Form과 배열
HTML Form과 배열
 
Android 기초 앱 사용
Android 기초 앱 사용Android 기초 앱 사용
Android 기초 앱 사용
 
확률변수와 분포함수
확률변수와 분포함수확률변수와 분포함수
확률변수와 분포함수
 
기초 확률 관련
기초 확률 관련기초 확률 관련
기초 확률 관련
 

통계자료 분석을 위한 R

  • 2. R 설치 • Windows 용 다운로드 o http://www.r-project.org o 좌측의 “CRAN” 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 3. R 설치 o 대한민국(Korea)의 http://statlab.snu.ac.kr/R/ 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 4. R 설치 o Download for Windows 클릭 • 다른 OS 사용자는 해당 OS 명 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 5. R 설치 o Base 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 6. R 설치 o Download R x.xx.x for Windows 클릭 o 이후 다운로드 받아 실행하면 바로 설치 된다. R 입문 이윤환, yoonani72@gmail.com
  • 7. R 실행하기 • 프로그램 그룹에서 R을 찾고 그 아래의 “R x.xx.x” 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 8. R 화면 R 입문 이윤환, yoonani72@gmail.com
  • 9. 계산기로써의 R • 산술 연산 o +(더하기), -(빼기), *(곱하기), /(나누기), ^ (승수) R 입문 이윤환, yoonani72@gmail.com
  • 10. 계산기로써의 R • 논리 연산 : 결과를 참(TRUE)과 거짓(FALSE)으로 갖는 연산 연산자 설명 < Less than, binary > Greater than, binary == Equal to, binary >= Greater than or equal to, binary <= Less than or equal to, binary & And, binary, vectorized && And, binary, not vectorized | Or, binary, vectorized || Or, binary, not vectorized R 입문 이윤환, yoonani72@gmail.com
  • 11. 변수와 상수 • 상수 o 숫자 2의 의미가 변할 수 있을까? o 1, 2, 3 … 등과 R의 문자열인 “a”, “abc”… 등은 그 의미가 숫자와 문자로 정해져 있다. o 즉 표기 자체의 의미가 변하지 않는 것을 상수라고 하고 숫자와 큰 따옴표로 둘러 쌓여진 문자들은 상수로 사용된다. • 변수 o 큰 따옴표로 둘러싸여지지 않은 알파벳은 자료를 담는 그릇이라 생각하자. o 이 그릇은 대입연산자(<-, 부등호와 Dash)을 통해 값을 넣는다. o 변수에는 상수값을 넣을 수도 있고 또 다른 변수를 넣을 수도 있다. R 입문 이윤환, yoonani72@gmail.com
  • 12. 변수와 상수 • 다음 상황에서 값은 뭐가 나올 것으로 생각하십니까? R 입문 이윤환, yoonani72@gmail.com
  • 13. Vector : 자주 사용되는 자료형 • x <- 5 의 예에서 x는 5라는 값 하나를 갖는 스칼라(Scalar) 자료 • 학생들의 키를 조사한다고 할 경우 학생 수 만큼 변수를 만들어서 값 을 입력하는 것은 어리석은 일 • 하나의 변수에 모든 학생들의 변수를 넣어 보관한다면 좀 더 쉽게 자 료를 관리할 수 있다. • 함수 c(…) o R Console 에서 help(c ) 라고 입력해 보자 R 입문 이윤환, yoonani72@gmail.com
  • 14. Vector • 다음 예를 살펴보자 R 입문 이윤환, yoonani72@gmail.com
  • 15. Vector 연산 • Vector는 스칼라와 연산시 스칼라 값이 Vector 의 각 원소와 연산을 한다. • Vector 끼리의 연산은 o 먼저 각 Vector의 원소의 개수가 같아야 한다. R 입문 이윤환, yoonani72@gmail.com
  • 16. Vector 연산 o Vector의 원소 개수가 서로 다를 경우에는 서로 배수의 관계에 있을 때 계산 가능 R 입문 이윤환, yoonani72@gmail.com
  • 17. 다른 방법으로 Vector 만들기 • 연산자 : “:” R 입문 이윤환, yoonani72@gmail.com
  • 18. 다른 방법으로 Vector 만들기 • 함수 : seq(), rep() seq( from = 1, to = 1, by = n), length.out = NULL, ... ) R 입문 이윤환, yoonani72@gmail.com
  • 19. 다른 방법으로 Vector 만들기 • 함수 : seq(), rep() rep( x = vector, (times | each) = n, ) R 입문 이윤환, yoonani72@gmail.com
  • 20. Vector 특정 원소 추출 • Vector명 뒤에 대괄호([]) 쌍으로 특정 원소를 추출한다. o 대괄호 값이 양수일 경우 : 해당 위치의 값을 가져온다. o 대괄호 값이 음수일 경우 : 해당 위치의 값을 제외하고 가져온다. o 대괄호에 논리연산이 들어갈 경우 : 해당 연산에 맞는 값을 가져온다. R 입문 이윤환, yoonani72@gmail.com
  • 21. Arrays and matrices • Array o 배열에 대한 수학적 의미와 비슷하게 생각하자. • n 차원을 갖고 있다 o 배열의 생성 • dim : 속성으로 차원 vector를 갖는다. 1500개의 원소를 z는 3차원을 가지며 갖는 vector 1차원 : 3, 2차원 : 5, 3차원 : 100개의 원소 3 * 5* 100 = 1,500 R 입문 이윤환, yoonani72@gmail.com
  • 22. Arrays and matrices o 배열의 생성 • array() 이용 array( data : vector, dim : dimension vector, [dimnames = NULL] : 차원의 이름 list ) R 입문 이윤환, yoonani72@gmail.com
  • 23. Arrays and matrices • Matrix o 배열의 특별한 경우로 행과 열을 갖는 (즉, 2차원 배열) 배열을 Matrix 라 한다. o Matrix 생성 • matrix() 함수 이용 matrix( data : vector, nrow = 1, ncol = 1, : 행과 열의 수 byrow = FALSE, : data를 행단위로 읽을지 여부 [dimnames = NULL] : 차원의 이름 list ) R 입문 이윤환, yoonani72@gmail.com
  • 24. Arrays and matrices • Matrix 생성 o cbind(), rbind() 이용 • cbind()는 주어진 Vector 혹은 Matrix를 열로 묶고 rbind()는 행으로 묶는 다. R 입문 이윤환, yoonani72@gmail.com
  • 25. Arrays and matrices • Array indexing o 앞선 3차원 배열의 경우 o 배열명[1st dim, , ] • Ex) > z[1, ,] ; 1차원의 인덱스가 1인 원소 출력 2차원이 5, 3차원이 100이므로 원소의 개수는 500 1차원의 인덱스를 1로 고정한 나머지는 2차원 배열처럼 출력 R 입문 이윤환, yoonani72@gmail.com
  • 26. Arrays and matrices o 배열명[1st dim, 2nd dim, ] • Ex) > z[1, 1,] ; 1차원의 인덱스가 1, 2차원의 인덱스가 1인 원소 출 력 3차원의 원소의 개수는 100이므로 100개 출력 R 입문 이윤환, yoonani72@gmail.com
  • 27. Arrays and matrices o 배열명[1st dim, 2nd dim, 3rd dim] • Ex) > z[1, 1, 1] ; 1차원의 인덱스가 1, 2차원의 인덱스가 1, 3차원의 인덱스가 1인 스칼라 출력 R 입문 이윤환, yoonani72@gmail.com
  • 28. Arrays and matrices o Index Matrices • Array의 특정 원소의 위치를 값으로 갖는 배열 • 특히 2차원 배열 즉, matrix에 값을 줄 때 각 행 별로 첫 열에 행, 두번째 열에 열 index를 부여한다. R 입문 이윤환, yoonani72@gmail.com
  • 29. Data Frame • Matrix의 경우 서로 다른 자료형을 넣을 수 없다. • 실제 자료들은 속성(열) 별로 서로 다른 자료형이 한데 섞여 있는 경 우가 많으므로 이럴 경우 Data Frame을 사용하면 유용하다. • data.frame 함수 o 서로 다른 자료형 벡터에 대해 cbind() 한 효과와 유사 R 입문 이윤환, yoonani72@gmail.com
  • 30. Data Frame • Indexing o Dataframe명$열이름 o Dataframe명[[열 번호]] o Matrix와 같이 표현 R 입문 이윤환, yoonani72@gmail.com
  • 31. Package 설치와 사용 • R Package o R 기능을 확장하는 기능 모둠 o R을 사용하는 사용자들이 제작하고 등록한 함수, Data 등으로 구성 • Package 설치와 사용 o R Console 창에 다음과 같이 입력하자 (alr3 라는 package 설치) > install.packages("alr3") o 옆에 보이는 화면과 같이 어디서 해당 Package를 다운로드 받을 것인지 사용자가 선택하도록 한다. • Korea 를 선택하자 o 방금 설치한 alr3 를 사용하기 위해 다음과 같이 입력하자 > library(alr3) o alr3가 갖고 있는 자료 fuel2001이 있는지 확인하자. > fuel2001 Drivers FuelC Income Miles MPC Pop Tax AL 3559897 2382507 23471 94440 12737.00 3451586 18.00 … R 입문 이윤환, yoonani72@gmail.com
  • 32. 작업공간 설정 : setwd() • 다음과 같이 C 드라이브에 “R_work”라는 디렉토리를 만들자. • R Console에서 다음과 같이 입력해 보자. > setwd(“c:R_work”) R 입문 이윤환, yoonani72@gmail.com
  • 33. Excel 파일의 import • 다음 주소를 브라우저 창에 입력하고 다운로드를 클릭하 여 파일을 앞선 만든 “c:R_work”에 저장하자. o http://j.mp/KXsVuE R 입문 이윤환, yoonani72@gmail.com
  • 34. Excel 파일의 import • 다운로드 받은 fuel2001.xlsx 파일을 Excel로 연다. o Excel 자체를 읽어들이는 xlsReadWrite 같은 Package도 있지만 Excel에서 자료 를 일반 Text로 변환하여 R에서 불러들인다. • “파일” 메뉴의 “다른 이름으로 저장”을 클릭 R 입문 이윤환, yoonani72@gmail.com
  • 35. • 파일 형식을 “CSV 쉼표로 분리(.csv)” 선택 R 입문 이윤환, yoonani72@gmail.com
  • 36. • 파일 이름은 “fuel2001.csv”가 되도록 입력하고 저장 o 이후에 나오는 메시지는 현재 쉬트만 저장 가능하다는 알림과 엑셀의 기능이 빠진 순수 텍스트로 저장된다는 경고 메시지로 모두 “예”를 클릭한다. R 입문 이윤환, yoonani72@gmail.com
  • 37. • 저장된 파일을 메모장 등으로 열어보자. • 앞서 엑셀에 저장된 내용을 행구분은 줄바꿈으로 그리고 열 구분은 쉼표(Comma)로 한 파일을 csv 파일이라고 한 다. o 값들중에 쉼표를 포함하는 값은 큰 따옴표 등으로 묶는다. R 입문 이윤환, yoonani72@gmail.com
  • 38. • R에서 방금 생성한 fuel2001.csv 파일을 불러오기 위해 다음과 같이 입력하자 > f2001 <- read.csv("fuel2001.csv", header=T) o fuel2001.csv 를 csv 포맷에 맞춰 읽어온다. o header = T : fuel2001.csv 파일은 첫 행에 제목 줄이 있다. 즉, 데이터로 인식하지 말고 열 이름으로 인식하라 o 읽어온 자료는 f2001 이라는 이름으로 저장하라. • 제대로 읽어 왔는지 다음과 같이 확인해 보자. R 입문 이윤환, yoonani72@gmail.com
  • 40. Graphics Windows • win.graph() • dev.off() o 그래픽 창의 활성화 o 현재 장치를 비활성화(끈다) o Ex 한다. • win.graph() • graphics.off() • win.graph() o 모든 그래픽 장치를 끈다. • win.graph() • par() 함수 • dev.list() o mfrow, mfcol o 활성화된 장치의 리스트를 o bg : 바탕화면 색깔 열람한다. o fig : 분할된 창의 크기 • dev.set(which=n) o new : 기본값 ‘F’, 새로 고수 o 지정한 n 장치를 활성화 한 준 그래픽 함수 호출시 새로 다. 그릴 것인지 결정 • dev.cur() o 현재 장치를 보여준다.
  • 41. 고수준 그래픽 함수 • 저수준 그래픽 함수 vs 고수준 • Ex 그래픽 함수 > win.graph() o 그림이나 그래프는 점, 선, 면 > x1 <- 1:5 으로 분해할 수 있는데 R은 이 > y1 <- x1^2 런 기초적인 기능 외에 그래프 의 여백, 좌표축등을 정의하는 > z1 <- 5:1 등 그래프를 그리는 기본적인 > mat1 <- cbind(x1, y1, z1) 함수는 저수준 그래픽 함수라 > par(mfrow=c(2, 3)) 부르고 여러가지 저수준 그래 > plot(y1, main=“using index”) 픽 함수를 모아 하나의 완성된 > plot(x=x1, y=y1, main=“x1^2”) 그래프를 그리는 함수는 고수 > plot(mat1, main=“using 준 그래픽 함수라 부른다. matrix”) • plot 함수 > plot(x1, y1, type=“l”) o 가장 대표적인 함수로 데이터 > plot(x1, y1, type=“h”) 객체를 x-y 좌표에 그래프로 나 > plot(x1, y1, type=“n”) 타낸다.
  • 42. 고수준 그래픽 함수 • type 인수 o “p” : 점(points) o “l” : 선(lines) o “b” : 점과 선 o “c” : “b”에서 점이 빠진것 o “o” : 겹침 점과 선 o “h” : 수직선(high density) o “s” : 수평선 우선의 계단모양 o “S” : 수직선 우선의 계단 모양 o “n” : 출력하지 않음
  • 43. 저수준 그래픽 함수 • 점을 만드는 함수 points • 선을 그리는 함수 o pch : 점의 모양 o abline : 좌표에 직선을 그린다. • 1-25는 정해진 모양이며 그 이 • 기울기 b와 절편 a를 지나는 후는 ASCII 코드에 의한 점 모 직선 양 • x축에 평행이고 y의 값이 h인 o Ex 직선 > x <- rep(1:5, rep(5, 5)) • y축에 평행이고 x의 값이 v인 > y <- rep(5:1, 5) 직선 > • Ex plot(1:5, type=“n”, xlim=c(0, 7.5), ylim > cars[1:5, ] =c(0.5, 5.5)) > z <- lm(dist ~ speed, data=cars) > points(x, y, pch=1:25, cex=2.5) > z$coef > plot(cars, main=“abline”) > text(x- > abline(h=20) 0.4, y, labes=as.character(1:25), cex =1.5) > abline(v=20) > abline(a=40, b=4) > abline(z, lty=2, lwd=2)
  • 44. 저수준 그래픽 함수 • lines • arrows o 좌표의 점들을 이어서 선을 그 o 화살표를 그린다. 리는 함수 o Ex o Ex > plot(1:9, type=“n”, axes=F) > plot(0:6, 0:6, type=“n”) > > lines(c(1, 3), c(6, 6), lty=1) arrows(1, 9, 4, 9, angle=30, length=0. > lines(c(1, 3), c(5, 5), lty=2) 25, code=2) > lines(c(1, 3), c(4, 4), lty=3) > arrows(1, 8, 4, 8, length=0.5, code=0) > lines(c(1, 3), c(3, 3), lty=4) > > lines(c(1, 3), c(2, 2), lty=5) arrows(1, 7, 4, 7, angle=90, length=0. > lines(c(1, 3), c(1, 1), lty=6) 1, code=1) > arrows(1, 6, 4, 6, angle=120, code=3)
  • 45. 저수준 그래픽 함수 • segments > plot(x, y) > s <- seq(length(x)-2) o 좌표 점들을 분할해서 출력할 > 수 있으며 단일 선분이 아니라 segments(x[s], y[s], x[s+3], y[s+3], lt 벡터로 구성된 여러 점들을 한 y=1:3) 화면에 출력한다. > box(which=“outer”) o Ex > x <- runif(12); y <- rnorm(12) > i <- order(x); x <- x[i]; y <- y[i] > par(mfrow=c(2,1)) > plot(x, y) > s <- seq(length(x)-1) > segments(x[s], y[s], x[s+2], > y[s+2], lty=1:2)
  • 46. 고수준 그래픽 함수 II • barplot o width o 막대그래프를 생성한다. • 막대의 두께 지정 o height o space • 막대그래프로 그릴 대상 자료 • 막대간의 간격 객체를 지정하며 인수값으로 o horiz 벡터나 행렬이 올 수 있다. • TRUE이면 수평으로 FALSE • beside가 FALSE이면 열의 수 이면 수직으로 는 막대의 크기, 행의 수는 각 o density 막대에서의 마디의 크기 • beside가 FALSE이면 그룹지 • 막대기둥 내부를 채우는 사선 어 병열로 배열된 형태 의 밀도 o beside o angle • 벡터형 출력 여부 • density를 사용할 때 사선의 각 도 • 4 by 5 행렬의 경우 o TRUE : 20개의 기둥 o col o FALSE : 4개의 마디를 갖는 • 막대나 막대 성분을 위한 색 5개의 기둥 지정 o border • 테두리 색
  • 47. 고수준 그래픽 함수 II • Ex > bar.x <- round(runif(12)*50) > bar.y <- matrix(bar.x, ncol=3, byrow=T) > par(mfrow=c(2,2)) > barplot(bar.x, horiz=T, density=5) > barplot(bar.x, density=15, angle=135) > barplot(bar.x, col=rainbow(length(bar.x))) > barplot(bar.x, border=“red”, col=c(“lightblue ”, “mistyrose”, “lightcyan”, “lavender”))
  • 49. • 다음은 책의 페이지 수와 가격의 자료이다. Pages Prices Pages Prices 637 27 496 20 336 15 673 25 336 14 562 24 430 15 229 10 164 9.5 316 13 533 20 217 8 529 22 296 12 509 20 115 7 419 16 257 11 596 24 649 22
  • 50. 자료 가져오기 > bnp <- read.csv("bookNprice.csv", header=T) > bnp Pages Prices 1 637 27.0 2 336 15.0 3 336 14.0 … 18 115 7.0 19 257 11.0 20 649 22.0 > attach(bnp)
  • 52. 회귀계수의 추정 - 최소제곱법 > lms <- lm(Prices ~ Pages) > lms Call: lm(formula = Prices ~ Pages) Coefficients: (Intercept) Pages 2.19108 0.03503 절편 기울기 ß0 ß1
  • 55. 회귀의 분산분석 회귀(모형) > summary(aov(lms)) Df Sum Sq Mean Sq F value Pr(>F) Pages 1 681.78 681.78 332.09 4.769e-13 *** Residuals 18 36.95 2.05 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ 오차
  • 57. > summary(lms) Call: lm(formula = Prices ~ Pages) Residuals: Min 1Q Median 3Q Max -2.9228 -0.7875 -0.1059 0.9603 2.4975 절편 Coefficients: ß0 Estimate Std. Error t value Pr(>|t|) (Intercept) 2.191079 0.859491 2.549 0.0201 * Pages 0.035026 0.001922 18.223 4.77e-13 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 기울기 0.05 ‘.’ 0.1 ‘ ’ 1 ß1 Residual standard error: 1.433 on 18 degrees of freedom Multiple R-squared: 0.9486, Adjusted R-squared: 0.9457 F-statistic: 332.1 on 1 and 18 DF, p-value: 4.769e-13
  • 59. • 적합값 : fitted > fitted(lms) 1 2 3 4 5 6 7 24.502460 13.959720 13.959720 17.252137 7.935296 20.859786 20.719683 8 9 10 11 12 13 14 20.019169 16.866854 23.066406 19.563834 25.763386 21.875532 10.211968 15 16 17 18 19 20 •13.259205: 9.791659 12.558691 6.219036 11.192688 24.922769 잔차 resid > resid(lms) 1 2 3 4 5 6 2.49753964 1.04028032 0.04028032 -2.25213703 1.56470357 -0.85978584 7 8 9 10 11 12 1.28031703 -0.01916864 -0.86685415 0.93359402 0.43616567 -0.76338616 13 14 15 16 17 18 2.12446838 -0.21196800 -0.25920535 -1.79165941 -0.55869101 0.78096368 19 20 -0.19268807 -2.92276896
  • 60. > plot(fitted(lms), resid(lms)) 0 주변으로 몰려있 어야 한다.
  • 61. > qqnorm(resid(lms), ylim=c(-3, 3), xlim=c(-3, 3)) 대각선 주변으로 몰 려있어야 한다.