R Basic

기본 of 기본

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

시작하기 전 꿀Tip:

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)

결과:

이렇게 자세히 알고 싶었던 게 아니라면 (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으로 살펴보기

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

   1 boxplot(trees)

boxplot.png

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

   1 plot(trees)

plot.png

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

   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 넘버를 정확히 알지 못 하면 낭패다.

iris dataset

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

   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)

   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마리를 대상으로 조사한 다이어트별 성장 속도를 조사한 데이타이다.

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


Class/Statistics/RBasic (2020-09-08 19:29:06에 gehoon가(이) 마지막으로 수정)