대충벌레 블로그
article thumbnail
Published 2021. 1. 19. 18:00
R 언어 공부 정리 [3] IT 기술/R
728x90
반응형

데이터를 분석할때는 다양한 명령어가 존재합니다.

확인 하기전에 저번 포스팅에 올렸던 깃허브에 있는 csv_exam.csv 파일을 준비해야합니다.

2021/01/18 - [IT/R] - R 언어 공부정리 [2]

exam <- read.csv('csv_exam.csv')
exam

head(exam) : 상단에서 6행을 출력합니다.

만약 뒤에 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

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

View(exam) :  데이터 뷰어 창을 열어 데이터를 확인합니다.

dim(exam) : 데이터의 행,열이 몇행 몇열인지 알수 있다.

> dim(exam) # 행 열
[1] 20  5

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(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 

Min : 최하위 값

1st Qu. 하위 25% 기준값

Median : 중간값

Mean : 평균값

3dr Qu : 상위 25% 기준값

Max : 최대 값

 

변수명 바꾸기

테스트를 위한 데이터 프레임을 하나 생성해 줍니다.

df_row <- data.frame(var=c(1,2,1), var2=c(2,3,2))
df_row

# === 실행결과 ===
  var var2
1   1    2
2   2    3
3   1    2

dplyr 패키지는 분석할때 가장 많이 사용하는 패키지 입니다 .

install.packages('dplyr')
library(dplyr)

패키지 설치후에 라이브러리 로드를 해줍니다.

rename(데이터프레임,바꿀변수명=원래변수명,,,) 

df_row <- rename(df_row,v1=var,v2=var2)
df_row

# ==== 실행결과 ===
  v1 v2
1  1  2
2  2  3
3  1  2

새로운 컬럼을 추가하기

df_row 데이터프레임에 있는 $v1 값과 $v2 값을 가져와서 더하고 sum 에 집어넣는다.

> df_row$sum <- df_row$v1 + df_row$v2
> df_row

# === 실행결과 ===
  v1 v2 sum
1  1  2   3
2  2  3   5
3  1  2   3

평균값을 구하고 싶다면

df_row$avg <- df_row$sum/2
df_row

# 실행결과
  v1 v2 sum avg
1  1  2   3 1.5
2  2  3   5 2.5
3  1  2   3 1.5

 

이제 기본예제에 있는 mpg 데이터를 분석해 봅시다.

 

고속도로 연비와 도시연비의 합과 평균을 구하고 새로운 컬럼 total과 avg를 추가 

mpg$total <- (mpg$cty+mpg$hwy)
mpg$total_avg <- mpg$total/2

제대로 값이 들어갔는지 head()를 통해 확인

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

통합연비의 평균은 ?

mean(mpg$total_avg)

total 과 total_avg의 요약 통계는 ?

summary(mpg$total)
summary(mpg$total_avg)

데이터 분포도 : 데이터가 분포되어 있는 정도를 표시해줍니다. [히스토그램]

hist(mpg$total)
hist(mpg$hwy)
hist(mpg$cty)

mpg$total 과 mpg$hwy의 히스토그램

 

mpg$total_avg (평균 연비가 20 이상이면 pass , 아니면 fail을 나타내는 컬럼 check 추가하기

mpg$check <- ifelse(mpg$total_avg >=20,"pass",'fail')

이때 mpg$check로 확인을 하게되면 어떤값이 더 많은지 무슨값이 있는지 보기가 어렵다

이럴때는 눈으로 보기쉽게 qplot(mpg$check) 혹은

수치로 정확히 알고싶으면 table(mpg$check) 이렇게 사용하면 된다.

qplot(mpg$check)

> table(mpg$check)

fail pass 
 106  128 

table(mpg$check) 사용시 fail 이 몇개 pass가 몇개인지 정확히 알수있다.

table 빈도 테이블로 특정 데이터가 몇개 있는지 나타내는 표 이다.

 

중첩 조건문

ifelse(조건식,'참값',ifelse(조건식,'참값','거짓값'))

조건식을 판별해서 만약 거짓값이 나온다면 한번도 조건을 판별해서 나타낸다.

예를 들어 통합연비 평균이 (mpg$total_avg) 30이상이면 A , 20이상이면 B , 그 외에는 C 등급을 부여하는 컬럼을 만든다고 하면 아래와 같이 작성하면 된다.

mpg$grade <- ifelse(mpg$total_avg >= 30 , 'A',ifelse(mpg$total_avg >= 20,'B','C'))

빈도 테이블로 확인해보자

A가 제일 적고 B가 가 제일 많고 c 가 중간이라는것을 알수있다.

정확히 몇개 있는지 보려면 table(mpg$grade)를 사용하자

 A   B   C 
 10 118 106 

 

이번엔 ggplot2에 들어있는 midwest로 분석을 해보자

우선 ggplot2의 midwest 데이터를 프레임 형태로 불러온다

 midwest <- as.data.frame(ggplot2::midwest)

dim(midwest) 를 통해 몇개의 행과 몇개의 열이 있는지 확인한다 

poptotal 변수를 total로 , popasian 변수를 asian으로 수정을 해줍니다.

midwest <- rename(midwest,total=poptotal)
midwest <- rename(midwest,asian=popasian)

전체인구(total), 아시아인구(asian)을 이용해서 인구백분율을 나타내는 파생변수 asianrate을 추가하고

히스토그램을 작성하시오.

midwest$asianrate <- (midwest$asian/midwest$total) * 100
hist(midwest$asianrate)

아시아 인구 백분율의 전체 평균을 구해서 , 만약 평균을 초과하면 large , 아니면 small을 부여하는 변수 size를 만들자.

midwest$size <- ifelse(midwest$asianrate > mean(midwest$asianrate),'large','small')

 

large 와 small 이 해당하는 지역이 얼마나 되는지 빈도표와 빈도 그래프를 작성하자

 

빈도 표 

 

table(midwest$size)
# 실행 결과
large small 
  119   318 

 

빈도 그래프

 

qplot(midwest$size)

 

반응형

'IT 기술 > R' 카테고리의 다른 글

R언어 공부 정리 [6]  (0) 2021.01.22
R언어 공부 정리 [5]  (0) 2021.01.21
R언어 공부 정리 [4]  (2) 2021.01.20
R 언어 공부정리 [2]  (2) 2021.01.18
분석 , 통계시 유용한 R 언어 설치와 기본 공부 정리  (0) 2021.01.15
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!