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

    Navigation

    • FindPage
    • HelpContents
    • FunReading

    Upload page content

    You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

    File to load page content from
    Page name
    설명

    • 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.