R 기본 1: 데이터 다루기

변수와 값

다음을 R에서 실행해보자. 결과가 예상대로 나오는가?

   1 2+3
   2 2*3
   3 2**3
   4 (1+2)*3

다음은 어떤 결과가 나오겠는가? 먼저 예상한 후 실행 해 보자

   1 r <- 2
   2 surface <- pi*r^2

참고로 <- 는 오른쪽의 값을 왼쪽에 대입하라는 뜻이며, = 로 대체할 수 있다.

   1 r = 2
   2 surface = pi*r^2

기대했던 결과가 안 나온다면 다음을 실행 해 보자

   1 surface
   2 print(surface)

이것은 어떤 결과가 나오겠는가?

   1 r = 3
   2 surface
   3 
   4 r = 3
   5 surface = pi*r^2
   6 surface

변수와 벡터

벡터(vector)란 수열(혹은 문자열)같이 어떤 값의 나열이다.

다음 코드는 무슨 뜻이겠는가? 계산 값이 어떻게 나올지 예상해보자.

   1 r = c(1,2,3,4,5,6,7,8)
   2 surface = pi*r^2
   3 surface

이제 다음 코드도 이해할 수 있다

   1 plot(r, surface)

여기까지가 numeric vector를 이용하여 값을 계산한 후 graph로 출력하는 방법이다.

데이터형

숫자 1(혹은 2, 혹은 3, 혹은 4, 혹은 5....후략)은 세 가지 의미로 해석할 수 있다.

  1. 숫자 1로서의 의미: 당연히 1 + 1 = 2 가 된다.
  2. 문자 1로서의 해석: 이 경우 1 + 1 = 11 이 된다. (문자 1에 문자 1을 더함)
  3. 기호로서의 1: 예를 들어 1학년이라는 뜻으로 1이라고 쓴 경우, 이것은 분류를 위한 기호일 뿐이다. 어떠한 계산도 가능하지 않다.
    • 1 대신에 병아리반, 햇님반이라고 해도 무리가 없다. 심지어 문자가 아닌 병아리나 햇님 이모티콘으로 바꿔도 상관없다.
    • 이런 경우를 범주형 값(categorical value)라고 하는데 R 세계에서는 factor라고 부른다.

문제는 인간은 이 중 어떤 뜻의 1인지 순식간에 판단을 하지만, 컴퓨터는 이게 안 된다. 인간이 명시해주지 않으면 오류가 생긴다.

  1. 변수에 숫자를 그대로 입력하면 R는 numeric 값으로 인식한다. 예: a <- 3

  2. 변수에 입력하는 값에 따옴표 (" 혹은 ' 둘 다 가능)를 붙히면 문자(character)로 인식한다. 예: a <- '3'

  3. 지금 다루는 값이 범주형(categorical)이라면 factor() 로 명시해준다. 예: a <- factor(3)

다음 코드는 오류를 포함한다. 어떤 오류가 있는가?

   1 r = c(1,2,3,4,5,6,7,8)
   2 r = factor(r)
   3 surface = pi*r^2
   4 surface

iris 데이터의 Species는 범주형(categorical, or factor) vector이다.

   1 str(iris$Species)

data.frame

data.frame은 R에서 가장 많이 쓰는 자료형이다.

data.frame의 예시:

data.frame 만들기

data.frame()함수로 data.frame을 만들 수 있다.

   1 data.frame()

빈 data.frame 대신 내용이 있는 data.frame을 만들어보자.

   1 # data.frame의 내용은 vector 입니다.
   2 name <- c('Mike','Tim','Jane','Bob','Dylan','Liz')
   3 
   4 # 키와 몸무게는 타이핑이 귀찮으니 sample() 함수로 지정 해 줍시다.
   5 # sample() 함수는 주어진 range에서 n개의 숫자를 고르는 역할을 합니다.
   6 height <- sample(160:180, 6)
   7 weight <- sample(45:80, 6)
   8 
   9 # 성별도 sample() 함수로 지정 해 볼까요? (어차피 가짜 데이타...)
  10 sex <- sample( c('M','F'), 6, replace=TRUE)
  11 # sampling을 할 모집단으로 c('M', 'F') 을 주었습니다.
  12 # replace=TRUE 옵션을 지정하여 중복해서 선택이 가능하도록 했습니다.
  13 
  14 # 준비한 vector들을 하나의 data.frame으로 묶습니다.
  15 data.frame(Name = name, Height = height, Weight = weight, Sex=sex)
  16 
  17 # df라는 변수를 준비하여 이 data.frame을 대입합니다.
  18 df <- data.frame(Name = name, Height = height, Weight = weight, Sex=sex)
  19 
  20 # 이 과정을 하나의 문장으로 만들 수도 있습니다.
  21 df <- data.frame(Name = c('Mike','Tim','Jane','Bob','Dylan','Liz'),
  22                  Height = sample(160:180, 6),
  23                  Weight = sample(45:80, 6),
  24                  Sex = sample( c('M','F'), 6, replace=TRUE)) # 마지막 괄호 닫는 것 잊지 마시길

만든 data.frame을 구경 해 볼까요?

   1 df
   2 str(df)
   3 plot(df)

BMI 지수를 계산해서 이 data.frame에 BMI 라는 이름의 vector로 추가 해 봅시다.

   1 # 체질량지수 BMI = weight (킬로그램) / heigt(미터)의 제곱이므로
   2 df$BMI <- df$Weight / (df$Height / 100)^2
   3 
   4 # 확인 해 보면,
   5 df


Class/Statistics/RBasic1 (2020-09-11 22:39:17에 gehoon가(이) 마지막으로 수정)