csv_exam.csv
    0.00MB

    RLab03

    # 데이터 정제 : 결측값(Missing value) 처리
    # 결측값 : 데이터 중 고의 또는 실수로 누락된 값을 의미한다.
    # 결측값을 그대로 놔둔채 데이터 가공 => 결과값에 오류, 잘못된 연산=> 적절한 정제처리가 필요하다.
    
    # 결측값 처리방법 
    # is.na 함수 이용 : NA인 데이터가 있으면 T, 없으면 F로 나타낸다.
    # na.omit 함수 이용 : NA인 데이터를 제거함.
    # 함수의 속성이용 : na.rm = T로하여 함수 수행시, NA를 제외함.
    
    airquality
    # 데이터 구조를 살펴봄
    str(airquality)
    
    # airqaulity 데이터에서 NA인 것은 TRUE, 아니면 FALSE로 나타냄
    is.na(airquality)
    
    # NA가 총 44개 있음.
    table(is.na(airquality))
    
    # Temp에는 NA가 없다.
    table(is.na(airquality$Temp))
    
    # Ozone에는 NA가 37개 발견됨.
    table(is.na(airquality$Ozone))
    
    # NA가 없는 Temp는 평균이 구해짐
    mean(airquality$Temp)
    
    # NA가 있는 ozone은 평균이 NA로 나옴.
    mean(airquality$Ozone)
    
    # ozone 속성에서 NA가 없는 값만 추출함.
    air_narm <- airquality[!is.na(airquality$Ozone),]
    air_narm
    
    # 결측값이 제거된 데이터에서는 mean함수가 정상적으로 동작함.
    mean(air_narm$Ozone)
    
    # na.omit함수를 이용해 결측값 처리하기
    air_narm1 <- na.omit(airquality)
    mean(air_narm1$Ozone)
    
    # 함수 속성인 na.rm을 이용해 결측값 처리하기
    mean(airquality$Ozone, na.rm = T)
    
    
    # 결측치 만들기
    # 결측치 표기 - 대문자 NA
    df <- data.frame(sex = c("M", "F", NA,"M", "F"),
                     score = c(5, 4, 3, 4, NA))
    df
    
    # 결측치 확인하기
    is.na(df)
    
    # 결측치 빈도 출력
    table(is.na(df))
    
    # 변수별로 결측치 확인
    # sex 결측치 빈도 출력
    table(is.na(df$sex))
    # score 결측치 빈도 출력
    table(is.na(df$score))
    
    # 결측치 포함된 상태로 분석
    # 평균산출
    mean(df$score)
    
    # 합계산출
    sum(df$score)
    
    # 결측치 제거하기
    # 결측치 있는 행 제거하기
    library(dplyr)
    
    # score가 NA인 데이터만 출력
    df %>% filter(is.na(score))
    
    # score 결측치제거하고 데이터 출력
    df %>% filter(!is.na(score))
    df
    
    # score 결측치 제거한 데이터를 새로운 변수에 assign함.
    df_nomiss <- df %>% filter(!is.na(score))
    df_nomiss
    
    # score 평균 산출
    mean(df_nomiss$score)
    
    # score 합계 산출
    sum(df_nomiss$score)
    
    # 여러변수 동시에 결측치 없는 데이터 추출하기
    # score, sex 결측치 제외
    df_nomiss <- df %>% filter(!is.na(score) & !is.na(sex))
    df_nomiss
    
    # 모든 변수에 결측치 없는 데이터 추출
    df_nomiss <- na.omit(df)
    df_nomiss
    
    # 함수의 결측치 제외기능 이용하기 - na.rm = T
    # 결측치 제외하고 평균 산출
    mean(df$score, na.rm = T)
    # 결측치 제외하고 합계 산출
    sum(df$score, na.rm = T)
    

    RLab04

    # 데이터 불러오기
    exam <- read.csv("csv_exam.csv")
    exam
    
    # 결측치 생성하기
    # 3, 8, 15행의 math에 NA 할당
    exam[c(3, 8, 15), "math"] <- NA
    exam
    
    # 평균 구하기
    library(dplyr)
    
    exam %>% summarise(mean_math = mean(math))
    
    # 결측치 제외하고 평균 산출
    exam %>% summarise(mean_math = mean(math, na.rm = T))
    
    # 다른 함수들에 적용
    exam %>% summarise(mean_math = mean(math, na.rm = T),
                       sum_math = sum(math, na.rm = T), # 합계산출
                       median_math = median(math, na.rm = T)) # 중앙값산출
    
    #------------------------------------------------
    # 결측치 대체하기 (평균값)
    # 평균구하기
    # 결측치 제외하고 math 평균 산출
    mean(exam$math, na.rm = T) # 55
    
    # 평균으로 대체하기
    # math가 NA이면 55로 대체
    exam$math <- ifelse(is.na(exam$math), 55, exam$math)
    # 결측치 빈도표 생성
    table(is.na(exam$math))
    
    exam
    mean(exam$math) # math 평균 산출
    
    # 혼자서 해보기 170p
    mpg <- as.data.frame(ggplot2::mpg)
    mpg[c(65,124,131,153,212),"hwy"] <- NA
    
    # 1) 두변수에 결측치가 있는지 확인
    table(is.na(mpg$drv))
    table(is.na(mpg$hwy))
    
    # 2)  
    mpg %>% filter(!is.na(hwy)) %>% 
      group_by(drv) %>% 
      summarise(mena_hwy= mean(hwy))
    
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading