1. 데이터 파악하기
1) 데이터를 파악할 때 사용하는 함수들
함수 | 기능 |
head() | 데이터 앞부분 출력 |
tail() | 데이터 뒷부분 출력 |
View() | 뷰어 창에서 데이터 확인 |
dim() | 데이터 차원 출력 |
str() | 데이터 속성 출력 |
summary() | 요약 통계량 출력 |
● head() - 데이터 앞부분 확인하기
- 데이터의 일부만 출력해 데이터의 형태를 확인할 떄 head()를 이용
- head()는 데이터의 앞부분을 출력하는 기능
head(exam) #앞에서부터 6행까지 출력
id class math english science
1 1 1 50 98 50
2 2 1 60 97 60
3 3 1 45 86 78
4 4 1 30 98 58
5 5 2 25 80 65
6 6 2 50 89 98
- 데이터 프레임 이름 뒤에 쉼표를 쓰고 숫자를 입력하면 입력한 행까지의 데이터를 출력
head(exam,10) #앞에서부터 10행까지 출력
id class math english science
1 1 1 50 98 50
2 2 1 60 97 60
3 3 1 45 86 78
4 4 1 30 98 58
5 5 2 25 80 65
6 6 2 50 89 98
7 7 2 80 90 45
8 8 2 90 78 25
9 9 3 20 98 15
10 10 3 50 98 45
● tail() - 데이터 뒷부분 확인하기
- tail()은 데이터의 뒷부분을 출력하는 기능
- 괄호 안에 데이터 프레임 이름을 입력하면 뒤에서부터 여섯 행을 출력
tail(exam) # 뒤에서부터 6행까지 출력
id class math english science
15 15 4 75 56 78
16 16 4 58 98 65
17 17 5 65 68 98
18 18 5 80 78 90
19 19 5 89 68 87
20 20 5 78 83 58
- 숫자를 입력하면 원하는 만큼의 행을 출력
tail(exam,10) #뒤에서부터 10행까지 출력
id class math english science
11 11 3 65 65 65
12 12 3 45 85 32
13 13 4 46 98 65
14 14 4 48 87 12
15 15 4 75 56 78
16 16 4 58 98 65
17 17 5 65 68 98
18 18 5 80 78 90
19 19 5 89 68 87
20 20 5 78 83 58
● View() - 뷰어 창에서 데이터 확인하기
- View()는 엑셀과 유사하게 생긴 '뷰어 창'에 원자료를 직접 보여주는 기능
- View(exam)을 실행하면 exam이라는 이름의 데이터 뷰어 창이 생성
# 데이터 뷰어 창에서 exam 데이터 확인
View(exam)
● dim() - 데이터가 몇 행, 몇열로 구성되어 있는지 알아보기
- dim()은 데이터 프레임이 몇 행, 몇 열로 되어 잇는지 알아볼 때 사용
dim(exam) # 행, 열 출력
#[1] 20 5
● str() - 속성 파악하기
- str()은 데이터에 들어있는 변수들의 속성들을 보여줌
- 출력 결과의 첫 번째 행에는 데이터의 속성이 무엇인지, 몇 개의 관측치와 변수로 구성되어 있는지 표시
-> 20개의 관측치(Observation), 5개 변수 (variables)로 구성
str(exam) # 데이터 속성 확인
'data.frame': 20 obs. of 5 variables:
$ id : int 1 2 3 4 5 6 7 8 9 10 ...
$ class : int 1 1 1 1 2 2 2 2 3 3 ...
$ math : int 50 60 45 30 25 50 80 90 20 50 ...
$ english: int 98 97 86 98 80 89 90 78 98 98 ...
$ science: int 50 60 78 58 65 98 45 25 15 45 ...
● summary() - 요약 통계랑 산출하기
- summary()는 '평균'처럼, 변수의 값을 요약한 '요약 통계량'을 산출하는 함수
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
출력값 | 통계량 | 설명 |
MIn | 최솟값(Minimum) | 가장 작은 값 |
1st Qu | 1사분위수 (1st Quantile) | 하위 25%(4분의 1) 지점에 위치하는 값 |
Median | 중앙값(Median) | 중앙에 위치하는 값 |
Mean | 평균(mean) | 모든 값을 더해 값의 개수로 나눈값 |
3rd Qu | 3사분위수 (3rd Quantile) | 하위 75%(4분의 3) 지점에 위치하는 값 |
Max | 최댓값(Maximum) | 가장 큰 값 |
2. 변수명 바꾸기
- 변수명을 이해하기 쉬운 단어로 바꾸면 데이터를 수월하게 다룰 수 있음
1) 변수명 바꾸기
- dplyr 패키지의 rename()을 이용해 변수명을 바꾸는 방법
● 데이터 프레임 생성
df_raw<-data.frame(var1=c(1,2,1), var2=c(2,3,2))
> df_raw
var1 var2
1 1 2
2 2 3
3 1 2
● dplyr 패키지 설치하고 로드
install.packages("dplyr") # dplyr 설치
libaray(dplyr) # dplyr 로드
● 데이터 프레임 복사본 만들기
- 변수명을 바꾸기 전에 원본을 보유하기 위해 df_new라는 데이터 프레임 복사본을 만듬
- 새로운 변수명 df_new에 df_raw를 할당하는 형태로 코드를 작성하면 됨
df_new<-df_raw # 복사본 생성
df_new # 출력
var1 var2
1 1 2
2 2 3
3 1 2
● 변수명 바꾸기
- rename()에 '데이터 프레임명, 새 변수명 = 기존 변수명'을 입력하면 됨
- 순서가 바뀌면 실행되지 않음
df_new <- rename(df_new,v2=var2) #var2를 v2로 수정
df_new
var1 v2
1 1 2
2 2 3
3 1 2
3. 파생 변수 만들기
- 데이터에 들어 있는 변수만 이용해 분석할 수도 있지만, 변수를 조합하거나 함수를 적용해 새 변수를 만들어 분석할 수도 있음
- 파생 변수 (Derived Variable)
-> 기존의 변수를 변형해 만든 변수
1) 변수를 조합해 파생변수 만들기
● 데이터 프레임 생성
df<-data.frame(var1=c(4,3,8), var2=c(2,6,1))
df
var1 var2
1 4 2
2 3 6
3 8 1
● var_sum 만들기
- var1과 var2 변수의 값을 더한 var_sum이라는 파생변수를 만들어 df에 추가
- 데이터 프레임명에 $을 붙여 새로 만들 변수명을 입력하고, <-로 계산공식을 할당하는 형태
df$var_sum <- df$var1 + df$var2 # var_sum 파생변수 생성
df
var1 var2 var_sum
1 4 2 6
2 3 6 9
3 8 1 9
● var_mean 만들기
- var1과 var2를 더한 후 2로 나눠 var_mean이라는 파생변수를 만들어 df에 추가
- 변수명 앞에 데이터프레임명을 반복해서 입력해야 함
df$var_mean <- (df$var1+df$var2)/2 #var_mean 파생변수 생성
df
var1 var2 var_sum var_mean
1 4 2 6 3.0
2 3 6 9 4.5
3 8 1 9 4.5
2) 조건문을 활용해 파생 변수 만들기
- 조건에 따라 서로 다른 값을 반환하는 '조건문 함수'를 이용해 파생변수를 만드는 방법
ex) 연비 기준을 충족해 '고연비 합격 판정'을 받은 자동차가 몇 대나 되는지 알아보는 상황
연비가 기준치를 넘기면 합격, 넘기지 못하면 불합격을 부여하도록 변수 만들기
● 기준값 정하기
- summay()을 이용해 통합 연비변수 total의 평균과 중앙값을 확인
summary(mpg$total) # 요약 통계량 산출
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.50 15.50 20.50 20.15 23.50 39.50
- 히스토그램을 생성해 자동차들의 연비 분포 확인
- hist()를 이용하면 히스토그램을 그릴 수 있음
hist(mpg$total) #히스토그램 생성
-> total 연비의 평균과 중앙값이 약 20
-> total 연비가 20~25 사잉에 해당하는 자동차 모델이 가장 많음
-> 대부분 25 이하이고, 25를 넘기는 자동차는 많지 않음
- 요약 통계량과 히스토그램을 종합하면 연비가 20을 넘기는 자동차에 고연비 합격 판정을 내리면 적당할 것으로 판단
● 합격 판정 변수 만들기
- ifelse()는 가장 많이 사용하는 조건문 함수
- 지정한 조건에 맞을 때와 맞지 않을 때 서로 다른 값을 반환하는 기능을 함
- total 이 20 이상이면 "pass"를 부여하고 그렇지 않으면 "fail"을 부여해 test라는 변수를 생성
#20 이상이면 pass, 그렇지 않으면 fail 부여
mpg$test<-ifelse(mpg$total >=20, "pass", "fail")
head(mpg,20) #데이터 확인
# A tibble: 20 × 13
manufacturer model displ year cyl trans drv cty hwy fl class total test
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr> <dbl> <chr>
1 audi a4 1.8 1999 4 auto… f 18 29 p comp… 23.5 pass
2 audi a4 1.8 1999 4 manu… f 21 29 p comp… 25 pass
3 audi a4 2 2008 4 manu… f 20 31 p comp… 25.5 pass
4 audi a4 2 2008 4 auto… f 21 30 p comp… 25.5 pass
5 audi a4 2.8 1999 6 auto… f 16 26 p comp… 21 pass
6 audi a4 2.8 1999 6 manu… f 18 26 p comp… 22 pass
● 빈도표로 합격 판정 자동차수 살펴보기
- 빈도표는 변수의 각 값들이 몇 개씩 존재하는지, 데이터의 개수를 나타낸 표
- table()을 이용해 빈도표를 만들면 합격한 자동차와 불합격한 자동차가 각각 몇대인지 알 수 있음
table(mpg$test) # 연비 합격 빈도표 생성
#fail pass
#106 128
● 막대 그래프로 빈도 표현하기
- ggplot2 패키지에 내장된 qplot()은 값의 개수로 막대의 길이를 표현하는 기능을 함
- ggplot2 패키지를 로드한 후 qplot()을 이용해 test 변수의 빈도를 막대 그래프로 표현
library(ggplot2) #ggplot2 로드
qplot(mpg$test) #연비 합격 빈도 막대 그래프 생성
3) 중첩 조건문 활용하기
- A,B,C 세 종류의 연비 등급으로 분류하는 변수
- total이 30 이상이면 A, 20~29는 B, 20 미만이면 C 등급으로 분류
- 세 가지 이상의 범주로 값을 부여하려면 ifelse() 안에 ifelse()를 넣는 형식으로 조건문을 중첩해 작성
● 연비에 따라 세가지 종류의 등급을 부여해 grade 변수를 생성
- ifelse()안에 또 다른 ifelse()가 들어 있는 형태로 구성
#total을 기준으로 A,B,C 등급 부여
mpg$grade<-ifelse(mpg$total>=30,"A", ifelse(mpg$total>=20,"B","C"))
head(mpg,20) # 데이터 확인
# A tibble: 20 × 14
manufacturer model displ year cyl trans drv cty hwy fl class total test grade
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr> <dbl> <chr> <chr>
1 audi a4 1.8 1999 4 auto… f 18 29 p comp… 23.5 pass B
2 audi a4 1.8 1999 4 manu… f 21 29 p comp… 25 pass B
3 audi a4 2 2008 4 manu… f 20 31 p comp… 25.5 pass B
4 audi a4 2 2008 4 auto… f 21 30 p comp… 25.5 pass B
5 audi a4 2.8 1999 6 auto… f 16 26 p comp… 21 pass B
6 audi a4 2.8 1999 6 manu… f 18 26 p comp… 22 pass B
7 audi a4 3.1 2008 6 auto… f 18 27 p comp… 22.5 pass B
● 빈도표, 막대그래프로 연비 등급 살펴보기
table(mpg$grade) #등급 빈도표 생성
# A B C
#10 118 106
qplot(mpg$grade) #등급 빈도 막대 그래프 생성
● 원하는 만큼 범주 만들기
- ifelse()를 더 중첩하면 원하는 만큼 범주의 수를 늘릴 수 있음
- 3개의 ifelse()를 중첩해 4개의 범주의 등급을 부여하는 코드
# A,B,C,D 등급 부여
mpg$grade2 <-ifelse(mpg$total>=30,"A",
ifelse(mpg$total>=25, "B",
ifelse(mpg$total>=20,"C","D")))
'데이터 > R 프로그래밍' 카테고리의 다른 글
R 프로그래밍 기초 (4) (0) | 2023.10.16 |
---|---|
R 프로그래밍 기초 (3) (0) | 2023.10.13 |
R 프로그래밍 기초 (1) (0) | 2023.10.12 |