본문 바로가기

My Study/R

R 공부 (2편) - 쉽게 배우는 R 데이터 분석

데이터 프레임 중

데이터 프레임은 행과 열로 구성된 표를 의미한다. 데이터 프레임을 R로 아래와 같이 구현할 수 있다. 

# data.frame()을 이용해서 데이터 프레임 만들기
df_midterm <- data.frame(english = c(50, 60, 70, 80, 90), math = c(10, 40, 50, 60,70))

df_midterm

 

 

데이터 프레임을 만들기 위해 data.frame() 함수를 사용했다. 들어가는 매개변수에는 변수를 만들되, 쉼표로 구분하면 된다. 그러면 아래와 같은 출력을 확인할 수 있다. 

  english math
1      50   10
2      60   40
3      70   50
4      80   60
5      90   70

 

 

또한, 앞서 배운 mean() 함수를 사용해서 평균을 구할 수 있다. 

midterm_average_english <- mean(df_midterm$english)
midterm_average_math <- mean(df_midterm$math)

midterm_average_english
midterm_average_math

# 출력값
> midterm_average_english
[1] 70
> midterm_average_math
[1] 46

 

 

데이터 파악을 위한 함수

데이터 프레임에서 데이터를 파악할 때 사용하는 함수들이 있다. 

 

1. head() : 데이터 앞부분 출력

 

2. tail() : 데이터 뒷부분 출력

 

3. View() : 뷰어 창에서 데이터 확인

 

4. dim() : 데이터 차원 출력 → 몇 행, 몇 열로 구성되어 있는지 확인

 

5. str() : 데이터 속성 출력

 

6. summary() : 요약 통계량 출력

 

summary(exam)을 했을 경우,

> summary(exam)
       id            class        math          english        science     
 Min.   : 1.00   Min.   :1   Min.   :20.00   Min.   :56.0   Min.   :12.00  
 1st Qu.: 5.75   1st Qu.:2   1st Qu.:45.75   1st Qu.:78.0   1st Qu.:45.00  
 Median :10.50   Median :3   Median :54.00   Median :86.5   Median :62.50  
 Mean   :10.50   Mean   :3   Mean   :57.45   Mean   :84.9   Mean   :59.45  
 3rd Qu.:15.25   3rd Qu.:4   3rd Qu.:75.75   3rd Qu.:98.0   3rd Qu.:78.00  
 Max.   :20.00   Max.   :5   Max.   :90.00   Max.   :98.0   Max.   :98.00

 

위에서 아래 순서대로 최솟값, 1사분위수, 중앙값, 평균, 3사분위수, 최댓값을 확인할 수 있다. 

 

 

변수명 바꾸기

df_raw <- data.frame(var1 = c(1,2,1), var2 = c(2,3,4))
df_raw

# 출력값
  var1 var2
1    1    2
2    2    3
3    1    4


install.packages("dplyr")  # rename()을 위한 패키지 설치
library(dplyr)

df_raw <- rename(df_raw, v2 = var2)
df_raw

# 출력값
  var1 v2
1    1  2
2    2  3
3    1  4

 

변수명을 바꾸기 위해서 rename() 함수를 사용했다. rename의 매개 변수로는 바꿀 데이터 프레임, 새 변수명 = 기존 변수명을 집어 넣는다. 

 

 

파생변수 만들기

데이터에 들어있는 변수 외에 변수를 계산한 새로운 변수를 만들 수 있다. 이를 '파생변수(Derived Variable)'이라고 한다. 

mpg$total <- (mpg$cty + mpg$hwy)/2  # 통합 연비 변수 생성
head(mpg)

# 출력값
  manufacturer model displ year cyl      trans drv cty hwy fl   class total
1         audi    a4   1.8 1999   4   auto(l5)   f  18  29  p compact  23.5
2         audi    a4   1.8 1999   4 manual(m5)   f  21  29  p compact  25.0
3         audi    a4   2.0 2008   4 manual(m6)   f  20  31  p compact  25.5
4         audi    a4   2.0 2008   4   auto(av)   f  21  30  p compact  25.5
5         audi    a4   2.8 1999   6   auto(l5)   f  16  26  p compact  21.0
6         audi    a4   2.8 1999   6 manual(m5)   f  18  26  p compact  22.0

 

위와 같이 출력값 내 'total'이라는 파생변수가 생긴 것을 확인할 수 있다. 

 

추가적으로, 조건에 따라 서로 다른 값을 반환하는 '조건문 함수'를 이용해서 파생변수를 만드는 방법이 있다. 아래는 mpg 데이터를 활용해서 전체 자동차 중에서 연비 기준을 총족해 고연비 합격 판정을 받는 자동차가 몇 대나 되는지 알아보는 실습이다. ifelse()라는 조건문 함수를 사용할 것이다. 앞서 파생변수로 만든 'total'이 20 이상이면 합격을 시키고 20 미만이면 불합격을 시킬 것이다. 

mpg$test <- ifelse(mpg$total >= 20, "pass", "fail")
head(mpg, 20)

# 출력값
   manufacturer              model displ year cyl      trans drv cty hwy fl   class total test
1          audi                 a4   1.8 1999   4   auto(l5)   f  18  29  p compact  23.5 pass
2          audi                 a4   1.8 1999   4 manual(m5)   f  21  29  p compact  25.0 pass
3          audi                 a4   2.0 2008   4 manual(m6)   f  20  31  p compact  25.5 pass
4          audi                 a4   2.0 2008   4   auto(av)   f  21  30  p compact  25.5 pass
5          audi                 a4   2.8 1999   6   auto(l5)   f  16  26  p compact  21.0 pass
6          audi                 a4   2.8 1999   6 manual(m5)   f  18  26  p compact  22.0 pass
7          audi                 a4   3.1 2008   6   auto(av)   f  18  27  p compact  22.5 pass
8          audi         a4 quattro   1.8 1999   4 manual(m5)   4  18  26  p compact  22.0 pass
9          audi         a4 quattro   1.8 1999   4   auto(l5)   4  16  25  p compact  20.5 pass
10         audi         a4 quattro   2.0 2008   4 manual(m6)   4  20  28  p compact  24.0 pass
11         audi         a4 quattro   2.0 2008   4   auto(s6)   4  19  27  p compact  23.0 pass
12         audi         a4 quattro   2.8 1999   6   auto(l5)   4  15  25  p compact  20.0 pass
13         audi         a4 quattro   2.8 1999   6 manual(m5)   4  17  25  p compact  21.0 pass
14         audi         a4 quattro   3.1 2008   6   auto(s6)   4  17  25  p compact  21.0 pass
15         audi         a4 quattro   3.1 2008   6 manual(m6)   4  15  25  p compact  20.0 pass
16         audi         a6 quattro   2.8 1999   6   auto(l5)   4  15  24  p midsize  19.5 fail
17         audi         a6 quattro   3.1 2008   6   auto(s6)   4  17  25  p midsize  21.0 pass
18         audi         a6 quattro   4.2 2008   8   auto(s6)   4  16  23  p midsize  19.5 fail
19    chevrolet c1500 suburban 2wd   5.3 2008   8   auto(l4)   r  14  20  r     suv  17.0 fail
20    chevrolet c1500 suburban 2wd   5.3 2008   8   auto(l4)   r  11  15  e     suv  13.0 fail


table(mpg$test)  # 연비 합격 빈도표 생성

# 출력값
fail pass 
 106  128

 

ifelse() 함수를 사용할 때는 매개 변수로, 조건 / 조건이 맞을 때 부여할 값 / 조건이 맞지 않을 때 부여할 값이 들어간다. 또한, 아래와 같이 중첩 조건문으로 활용 가능하다. 

mpg$grade <- ifelse(mpg$total >= 30, "A",
                    ifelse(mpg$total >= 25, "B",
                           ifelse(mpg$total >= 20, "C", "D")))


table (mpg$grade)

# 출력값
  A   B   C   D 
 10  33  85 106

 

 

'My Study > R' 카테고리의 다른 글

R 공부 (1편) - 쉽게 배우는 R 데이터 분석  (0) 2024.07.03