Home ChungLab Wiki
    • 설명
    • 못 고치는 문서
    • Menu
      • Navigation
      • RecentChanges
      • FindPage
      • 사이트맵
      • Help
      • HelpContents
      • HelpOnMoinWikiSyntax
      • 보기
      • 첨부
      • 정보
      • 원문 보기
      • 인쇄용 화면
      • 수정
      • 로드
      • 저장
    • 로그인

    Navigation

    • FindPage
    • HelpContents
    • FunReading
    2020-09-08 19:29:06에 수정된 3번째 판
    • Class
    • Statistics
    • RBasic

    R Basic

    기본 of 기본

    R을 설치하면 가지고 놀 수 있는 datasets가 기본으로 설치된다. (이런것들이다)

    • trees (벚나무의 직경, 높이, 부피)

    • Iris flower data set (붓꽃 길이)

    • ChickWeight (병아리 몸무게)

    • Loblolly (Loblolly 소나무 높이)

    • Orange (오렌지 나무 직경)

    시작하기 전 꿀Tip:

    • Console에서 위화살표 키를 누르면 전에 쳤던 명령문이 복사된다.
    • # 이후의 문장은 실행이 안 된다. 메모/주석 용도로 사용하자
    • ? 는 도움말 명령이다. ? 이후 키워드를 치면 그 키워드를 검색한다.
    • R에서는 대소문자를 다르게 인식한다. School과 school은 다른 뜻이다. sChOoL 도 다른 뜻이다.

    trees dataset

    Data 살펴보기

    벚나무 31그루의 직경, 높이, 부피 데이타를 이용해서 R의 기본 사용법을 익혀보자.

       1 # trees란 무엇인가!
       2 ?trees
    

    trees 데이타를 보려면 trees 를 입력한다.

       1 # trees 데이타를 화면에 띄워보자
       2 trees
       3 
       4 # 혹은 print(trees)도 가능하다.
       5 print(trees)   # "trees 를 출력(print)해 줘" 라고 명시적으로 내린 명령이다.
    

    31 x 3 개의 숫자를 한번에 보려니 눈에도 안 들어오고 의미없다. 일부만 화면에 띄워보자.

       1 head(trees)    # 첫 6개의 data point만 화면에 출력
       2 head(trees,10) # 첫 10개의 data point만 화면에 출력
       3 tail(trees,4)  # 마지막 4개의 data point만 화면에 출력
    

    어떤 경우는 data 자체를 보는 것보다 data의 구조를 보는 것이 도움이 된다.

       1 # structure를 보여주세요.
       2 str(trees)
    

    결과:

    • 'data.frame':   31 obs. of  3 variables:
       $ Girth : num  8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
       $ Height: num  70 65 63 72 81 83 66 75 80 75 ...
       $ Volume: num  10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...
      • trees는 data.frame 형식이고, 3가지 변수에 대한 31개의 관찰값을 포함한다.
        • data.frame은 r에서 데이타를 다루는 방법 중 하나로, 여러개의 수열(혹은 문자열)을 포함할 수 있다.
        • 수열(혹은 문자열)은 vector 라고 부르는데, numeric vector(수열), character vector(문자열) 등이 있다.
        • 특이한 데이타형으로 범주형(categorical)이 있다. 범주형 데이타로서 1,2,3,4가 저장되어 있다면 이 값은 숫자로서 의미하는 것이 아니고 분류(혹은 기호)의 의미이다. 즉, 범주형 데이터로는 사칙연산이 안된다.
        • 예를 들어 어떤 학생 조합에 소속된 학생의 학년은 1,2,3,4로 표시되지만, 이 값은 사칙연산이 안되는 범주형 데이터이다. 범주형을 R에서는 factor라고 부른다.
        • 특별한 종류의 범주형 데이타(factor)로 논리형(True/False)이 있다. 여기서 True는 T,r,u,e 네 글자가 아닌 "참"이라는 의미다.
      • trees는 Girth, Height, Volume 세가지 numeric vector를 포함하고 각각의 vector는 대충 이렇게 생겼다.

    이렇게 자세히 알고 싶었던 게 아니라면 (TMI주의보), 데이타의 차원(dimension)만 단순히 알아보고 싶었다면 이렇게 한다.

       1 # data size(dimension)을 확인해보자.
       2 dim(trees)
    

    이 데이타를 한눈에 파악하고 싶은데 str()도 dim()도 마음에 안 든다면 summary() 함수를 써 보자.

       1 summary(trees)
       2 # 데이타의 평균, 최상값, 최소값, 중간값, 상위 25% 값, 하위 25% 값을 보여준다.
    

    Data.frame에 포함된 특정 vector를 지목하려면 $ 표식을 이용한다.

       1 # 나무 height의 평균, 최상값, 최소값, 중간값, 상위 25% 값, 하위 25% 값을 보고 싶다면,
       2 mean(trees$Height)     # mean(trees) 은 어떤 결과가 나오나?
       3 max(trees$Height)      # max(trees) 은 어떤 결과가 나오나?
       4 min(trees$Height)      # min(trees) 은 어떤 결과가 나오나?
       5 quantile(trees$Height) # quantile(trees) 은 어떤 결과가 나오나?
    

    Plot으로 살펴보기

    숫자보다 그림이 데이타를 한눈에 파악하기 편하다. 그림으로 보자~

    • RStudio의 Plots 창에서 Export 메뉴를 클릭하여 그림을 저장할 수 있다.

       1 boxplot(trees)
    

    boxplot.png

    평균값 같은 통계 계산값 말고, 모든 data point를 xy 평면에 찍어줘

       1 plot(trees)
    

    plot.png

    특별히 Girth 대비 Volume만 따로 xy 평면에 보여줘.

    • ~ 기호 의미: y ~ x 형식으로 쓰면, "x대비 y의 변화량" 이란 뜻.

       1 plot(Volume ~ Girth, data = trees)
       2 
       3 # 만약 log scale로 보려면,
       4 plot(Volume ~ Girth, data = trees, log = "xy")
       5 
       6 # 만약 y axis만 log scale로 보려면,
       7 plot(Volume ~ Girth, data = trees, log = "y")
    

    ~ 기호 대신 $기호를 써서 같은 의미를 다르게 표현할 수 있다.

       1 plot(trees$Girth, trees$Volume)
       2 # trees의 Girth와 Volume을 쓰겠다고 명시했으므로 data = trees 라는 표현도 생략했다.
       3 # 앞에 나온 Girth가 x축, 뒤에 나오는 Volume이 y축으로 표시된다. (~ notation과 순서가 반대)
    

    trees의 1번 컬럼과 3번 걸럼을 이용해서 plot 찍어달라는 방법으로 표현할 수도 있다.

       1 plot(trees[,1], trees[,3])
       2 # 그러나 column 넘버를 정확히 알지 못 하면 낭패다.
    
    • data[row 번호, col 번호] 순서로 data point 지정가능
    • 빈칸으로 놔두면 그 row(혹은 colume) 전체로 해석됨

    iris dataset

    • 붓꽃 150송이의 꽃받침 길이(Sepal.Length), 꽃받침 너비(Sepal.Width), 꽃잎 길이(Petal.Length), 꽃잎 너비(Petal.Width), 종(Species)을 조사한 데이터이다.

    • 생물학자&통계학자인 Ronald Fisher의 1936년 Linear discriminant analysis에 관한 논문에 등장한 이후로 Multivariate statistics의 표준 예제 데이타로 자주 인용된다.

    다음 코드를 실행하면 어떤 결과가 예상되는가? 예상대로 나오는지 실제로 실행 해 본다.

       1 iris
       2 dim(iris)     # data size(dimension)을 확인해보자.
       3 head(iris)    # 첫 6개의 data point만 화면에 출력
       4 tail(iris,5)  # 마지막 5개의 data point만 화면에 출력
       5 summary(iris)
       6 boxplot(iris)
       7 plot(iris)    # scatter plot
    

    iris$Species에 붓꽃 종이 저장되어 있다.

       1 iris$Species
    

    iris$Species vector는 Factor 형식이다.

       1 str(iris$Species)
    
    • Factor 형식의 vector에 만약 숫자 1이 들어있다면 그것은 1개라는 뜻이 아니고 기호로서의 1이다. 즉, 사칙연산이 불가능하다.
    • iris$Species에는 setosa, versicolor, virginica 세 가지 단어가 factor로서 들어 있다.
    • setosa, versicolor, virginica를 다른 기호로 치환해도 된다. 결국 우리에게 중요한건 "분류"일 뿐

       1 c('a','b','c')[iris$Species]   # iris$Species에 저장된 분류(Factor)의 순서대로 a,b,c를 지정한다.
    

    iris$Species에 저장된 setosa, versicolor, virginica를 red, blue, green으로 바꿔보자

       1 c('red','blue','green')[iris$Species]
    

    그리고 그렇게 변환된 값을 plot()의 col= 옵션으로 지정해보자.

       1 plot(iris, col=c('red','blue','green3')[iris$Species]) # green3은 green보다 약간 진한 색이다.
       2 
       3 # 특정 측정값, 예를 들어 Petal.Length vs. Sepal.Length 만 보고 싶다면,
       4 plot(Sepal.Length ~ Petal.Length, data = iris, col=c('red','blue','green3')[iris$Species] )
       5 
       6 # 혹은 이런 식의 표현도 가능하다.
       7 colorMap <- c('red','blue','green3')[iris$Species]
       8 plot(iris$Petal.Length, iris$Sepal.Length, col=colorMap )
    

    iris_P_S_color.png

    plot() 함수에 매번 data= 옵션을 지정하기 성가시면 attach() 함수로 아예 선언할 수 있다.

       1 attach(iris)       # 앞으로 detach 되기 전까지 data = iris 라고 자동 입력
       2 plot(Petal.Length, Sepal.Length, col=c('red','blue','green4')[Species])
       3 plot(Sepal.Length ~ Petal.Length, col=c('red','blue','green4')[Species])
       4 detach(iris)       # iris 사용 끝
    

    ChickWeight

    병아리 50마리를 대상으로 조사한 다이어트별 성장 속도를 조사한 데이타이다.

    • weight: 병아리 몸무게 (numeric 데이타, gram)
    • Time: 나이 (numeric 데이타, days)
    • Chick: 병아리 일련번호 (ordered factor)
    • Diet: 다이어트 종류 (factor)

    과제: ChickWeight 데이타를 이용하여, 다이어트 종류별로 다른 색을 사용하여, 시간 vs 몸무게 그래프를 그려라.


    /CentralLimitTheorem   /ChiSquared   /Clustering   /InstallR   /InstallRStudio   /Lies   /NormalDistribution   /RBasic   /RBasic1   /RBasic2   /RBasic3   /RCloud   /RIntro   /RKorean   /T-Test  
    Copyright © ChungLab. Built on MoinMoin and Bootstrap. All Rights Reserved.