본문 바로가기
  • "You can't manage what you can't measure" Peter Drucker
데이터 분석 (with Rstudio)

Rstudio 데이터 살펴보기 #2 (summary 함수, 결측값 확인 등)

by Vitaminymc 2023. 7. 28.
반응형

분석 데이터 (상북고_농구부.xlsx)

(북산 - 나무위키 (namu.wiki) "5. 연재 당시 라인업" 정리, 학년은 나이로 반영)

uniform_no  name height weight blood type age position
4 채치수 197 90 A 19 C
5 권준호 178 62 A 19 SF
6 이달재 164     18 PG
7 송태섭 168 59 B 18 PG
8 신오일 170     18 PG
9 정병욱 180     18 SF
10 강백호 189 83 B 17 PF
11 서태웅 187 75 AB 17 SF
12 이호식 170     17 SF
13 이재훈 171     17 SG
14 정대만 184 70 A 19 SG
15 오중식 162     17 PG

데이터 요약해서 보기

library(readxl)   #엑셀 파일을 불러오기 위한 패키지

slam_dunk <- read_excel ("상북고_농구부.xlsx")  #해당 엑셀파일 불러오기


summary (slam_dunk)
   uniform_no        name                 height          weight     
 Min.   : 4.00      Length:12            Min.   :162.0   Min.   :59.00  
 1st Qu.: 6.75    Class :character   1st Qu.:169.5   1st Qu.:64.00  
 Median : 9.50   Mode  :character   Median :174.5   Median :72.50  
 Mean   : 9.50                      Mean   :176.7   Mean   :73.17  
 3rd Qu.:12.25                      3rd Qu.:184.8   3rd Qu.:81.00  
 Max.   :15.00                      Max.   :197.0   Max.   :90.00  
                                                    NA's   :6 
uniform_no
Min.   : 4.00
1st Qu.: 6.75
Median : 9.50
Mean   : 9.50
3rd Qu.:12.25
Max.   :15.00
name
Length:12
Class :character
Mode  :character



height
Min.   :162.0
1st Qu.:169.5
Median :174.5
Mean   :176.7
3rd Qu.:184.8
Max.   :197.0
weight
Min.   :59.00
1st Qu.:64.00
Median :72.50
Mean   :73.17
3rd Qu.:81.00
Max.   :90.00
NA's   :6
blood type
Length:12
Class :character
Mode  :character


 
age
Min.   :17.00
1st Qu.:17.00
Median :18.00
Mean   :17.83
3rd Qu.:18.25
Max.   :19.00
position
Length:12
Class :character
Mode  :character


 
  1. uniform_no를 숫자형 변수로 인식하여, 최소값, 1사분위수, 중앙값, 평균, 3사분위수, 최대값 제시 
  2. uniform_no는 숫자형태이나, 실질적으로 크기 및 비교의 의미가 없으므로, Factor로 변환 필요
  3. name, blood type, position 은 문자형 변수로 인식하여, 데이터 갯수 제공
  4. height, weight, ages는 숫자형 변수로 인식하여, 최소값, 1사분위수, 중앙값, 평균, 3사분위수, 최대값 제시
  5. 단, weight는 결측값(Missing Value)이 있음에 따라, 결측값의 개수를 NA(Not Available)로 제공
#slam_dunk의 uniform_no 필드의 데이터를  데이터를 범주형(Factor)으로 변환

slam_dunk$uniform_no <- as.factor(slam_dunk$uniform_no) 


# summary 재실행

summary (slam_dunk)
uniform_no
4 : 1
5 : 1
6 : 1
7 : 1
8 : 1
9 : 1
(Other):6
name
Length:12
Class :character
Mode  :character



height
Min.   :162.0
1st Qu.:169.5
Median :174.5
Mean   :176.7
3rd Qu.:184.8
Max.   :197.0
weight
Min.   :59.00
1st Qu.:64.00
Median :72.50
Mean   :73.17
3rd Qu.:81.00
Max.   :90.00
NA's   :6
blood type
Length:12
Class :character
Mode  :character


 
age
Min.   :17.00
1st Qu.:17.00
Median :18.00
Mean   :17.83
3rd Qu.:18.25
Max.   :19.00
position
Length:12
Class :character
Mode  :character


 
  • uniform_no가 범주형(Factor)로 변환되어, 각 범주의 빈도수를 표시

summary() 함수

  • summary() 함수는 R의 기본 내장 함수로(패키지를 로드할 필요 없음), 데이터의 요약 통계를 제공하는 데 사용
  • summary() 함수는 주로 데이터를 살펴보고, 데이터의 구조와 특성을 파악하는 데 유용하게 활용됨
  • 특정 데이터 객체(예: 벡터, 데이터프레임, 행렬 등)를 인수로 받아 해당 데이터의 특징을 요약하여 보여줌
    • 벡터 요약: 숫자형 벡터의 경우, 최소값, 1사분위수(25th percentile), 중앙값(2사분위수, 50th percentile), 평균, 3사분위수(75th percentile), 최대값을 보여주며, 논리형 벡터의 경우, TRUE와 FALSE의 개수를 보여줌
    • 데이터프레임 요약: 데이터프레임을 인수로 받으면 각 열의 데이터 유형과 각 열에 대한 요약 통계를 제공하며,  숫자형 열의 경우, 벡터 요약 정보와 유사한 통계량이 제공되며, 문자열 열의 경우, 빈도수와 유일한 값의 개수 등을 제공
    • 행렬 요약: 행렬을 인수로 받으면 각 열(또는 행)에 대한 요약 통계를 제공, 벡터 요약과 유사한 결과를 제공
summary(slam_dunk$height)  #특정 필드만 적용
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  162.0   169.5   174.5   176.7   184.8   197.0 
summary(slam_dunk$uniform_no)
 4   5   6   7   8   9 10 11 12 13 14 15 
 1   1   1   1   1   1   1   1   1   1   1   1 

is.na ()함수

  • na.omit() 함수는 R에서 결측값(NA)이 포함된 데이터를 가진 객체(예: 데이터프레임, 행렬 등)에서 NA가 있는 행을 제거하고 데이터를 반환
  • NA인지 여부를 확인하고, 논리값(TRUE 또는 FALSE)을 반환
  • NA가 아니면 FALSE, NA이면 TRUE 반환
  • 각 요소의 NA 여부를 빠르게 확인하는 데 유용
is.na(slam_dunk)
      uniform_no     name     height      weight       blood type       age         position
 [1,]      FALSE    FALSE     FALSE     FALSE      FALSE           FALSE    FALSE
 [2,]      FALSE    FALSE     FALSE     FALSE      FALSE           FALSE    FALSE
 [3,]      FALSE    FALSE     FALSE     TRUE       TRUE             FALSE    FALSE
 [4,]      FALSE    FALSE     FALSE     FALSE      FALSE           FALSE    FALSE
 [5,]      FALSE    FALSE     FALSE     TRUE       TRUE             FALSE    FALSE
 [6,]      FALSE    FALSE     FALSE     TRUE       TRUE             FALSE    FALSE
 [7,]      FALSE    FALSE     FALSE     FALSE      FALSE           FALSE    FALSE
 [8,]      FALSE    FALSE     FALSE     FALSE      FALSE           FALSE    FALSE
 [9,]      FALSE    FALSE     FALSE     TRUE       TRUE             FALSE    FALSE
[10,]      FALSE   FALSE     FALSE     TRUE       TRUE             FALSE    FALSE
[11,]      FALSE    FALSE    FALSE     FALSE      FALSE           FALSE    FALSE
[12,]      FALSE   FALSE     FALSE    TRUE       TRUE              FALSE    FALSE
colSums(is.na(slam_dunk))  #colSums() 함수를 활용하여 각 열의 NA 개수를 계산
  • colSums() 함수는 행렬 또는 데이터프레임의 각 열에 대해 합계를 계산하는 함수
  • is.na() 함수를 이용하여 NA인 요소를 1로, NA가 아닌 요소를 0으로 변환한 후 colSums() 함수를 적용하면 각 열의 NA 개수를 계산
uniform_no       name     height     weight      blood type        age        position 
                0             0              0             6                     6            0                  0 
  • weight와 blood type에 각 6개의 NA가 있음을 확인 

na.omit() 함수

  • na.omit() 함수는 R에서 결측값(NA)이 포함된 데이터를 가진 객체(예: 데이터프레임, 행렬 등)에서 NA가 있는 행을 제거하고 데이터를 반환
  • na.omit() 함수를 사용하면, NA가 포함된 행이 제거되므로, 데이터의 일부 정보가 손실될 수 있다는 점을 고려하여,
    NA가 있는 행을 제거할지에 대한 판단을 데이터 분석의 목적과 데이터의 특성에 따라 결정

결측값은 데이터셋에서 값이 비어있거나 측정되지 않은 부분을 의미하며, 데이터 분석 시 올바르게 처리해야 하는 중요한 요소로 결측 이유가 무엇인지 (데이터 없음, 데이터 수집 오류 등), 어떻게 처리할 것인지 (제외, 평균 반영 등)에 대한 검토 필요

na.omit(slam_dunk)
# A tibble: 6 × 7
  uniform_no    name      height    weight    `blood type`   age      position
  <fct>              <chr>      <dbl>     <dbl>        <chr>        <dbl>      <chr>   
1 4                  채치수       197        90               A               19          C       
2 5                  권준호       178        62               A               19          SF      
3 7                  송태섭       168        59               B               18          PG      
4 10                강백호       189        83               B               17          PF      
5 11                서태웅       187        75               AB             17         SF      
6 14                정대만       184        70               A               19         SG 
  • 결측값이 있는 3번째, 5번째, 6번째, 9번째, 10번째, 12번째 행을 제외한 결과를 반환
  • 총 12개의 행 중에 결측값이 있는 6개를 제외한 결과를 반환

 

728x90