데이터 프레임 중
데이터 프레임은 행과 열로 구성된 표를 의미한다. 데이터 프레임을 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 Work > Data Literacy' 카테고리의 다른 글
R 공부 (4편) - 쉽게 배우는 R 데이터 분석 (1) | 2024.07.14 |
---|---|
R 공부 (3편) - 쉽게 배우는 R 데이터 분석 (0) | 2024.07.10 |
R 공부 (1편) - 쉽게 배우는 R 데이터 분석 (0) | 2024.07.03 |
프로그래머스 연습문제 풀이 (0) | 2023.12.09 |
필수 SQL 개념 - (3/3편) (0) | 2023.11.30 |