r_data.zip
    0.07MB

    RLab01 - 6장

    # 2019년 하반기 패밀리 레스토랑 온라인 예약 및 매출 데이터와 관련된 데이터.
    # customer_r : 고객 정보(183행,데이터수)
    # item_r : 메뉴 상품 정보(10)
    # order_info_r : 주문 상세세 정보(391)
    # reservation_r : 주문 예약,취소 정보(396)
    
    # dplyr 패키지 
    # : 데이터 조작과 처리에 특화된 R 패키지.(디플라이알)
    # : 데이터 처리하는 주요 패키지로 자리 잡음.
    
    # 열이름을 소문자로 변환 (결과출력안함함)
    colnames(customer_r) <- tolower(colnames(customer_r))
    colnames(reservation_r) <- tolower(colnames(reservation_r))
    colnames(order_info_r) <- tolower(colnames(order_info_r))
    colnames(item_r) <- tolower(colnames(item_r))
    head(customer_r)
    
    # dplyr 패키지 설치
    install.packages("dplyr")
    # 패키지 로딩
    library(dplyr)
    
    # 파이프 연산자 ( %>% ) : 데이터 전달하기
    # = 체인 연산자(chain operator), 파이프
    # 내용          표현방법
    # F(x)          x %>% F
    # G(F(x))       x %>% F %>% G
    
    # count()함수 : 데이터를 세는 함수
    # customer_r 데이터 셋을 count() 함수로 전달함함 
    customer_r %>% count()
    
    exam <- read.csv("csv_exam.csv")
    
    exam %>%filter(class == 1)
    
    # filter()함수 : 조건으로 행 선택하기
    head(order_info_r)
    # item_id값이 m0001인 행만 선택출력
    order_info_r %>% filter(item_id == "M0001")
    order_info_r %>% filter(item_id == "M0001" & 
                              sales >= 150000)
    
    # 2반인 경우만 출력
    head(exam)
    exam %>% filter(class == 2)
    # 1반이 아닌경우만 출력
    exam %>% filter(class != 1)
    # 3반이 아닌경우만 출력
    exam %>% filter(class != 3)
    # 수학점수가 50점을 초과한 경우
    exam %>% filter(math > 50)
    # 수학점수가 50점 미만인 경우
    exam %>% filter(math < 50)
    # 영어점수가 80점 이상인 경우
    exam %>% filter(english >= 80)
    # 영어점수가 80점 이하인 경우
    exam %>% filter(english <= 80)
    
    # 1반이면서 수학점수가 50점 이상인 경우
    exam %>% filter(class == 1 & math >= 50)
    # 2반이면서 영어점수가 80점 이상인 경우
    exam %>% filter(class == 2 & english >= 80)
    
    # 수학 점수가 90점 이상이거나 영어점수가 90점 이상인 경우
    exam %>% filter(math >= 90 | english >= 90)
    # 영어 점수가 90점 미만이거나 과학점수가 50점 이상인 경우
    exam %>% filter(english < 90 | science >= 50)
    
    # 1, 3, 5반에 해당되면 추출
    # %in% (매치 오퍼레이터)
    exam %>% filter(class ==1 | class == 3 | class == 5)
    exam %>% filter(class %in% c(1,3,5))
    
    # 추출한 행으로 데이터 만들기
    # class가 1인 행 추출, class1에 할당
    class1 <- exam %>% filter(class == 1)
    # class가 2인 행 추출, class1에 할당
    class2 <- exam %>% filter(class == 2)
    # 1반 수학점수 평균구하기
    mean(class1$math)
    # 2반 수학점수 평균구하기
    mean(class2$math)
    
    #------------------------------------------------------------
    
    # 혼자서 해보기 133p
    # Q1.
    library(ggplot2)
    mpg <- as.data.frame(ggplot2::mpg)
    head(mpg)
    # 1)배기량이 4이하인 자동차의 고속도로 연비 평균이 더 높은것 
    displ1 <- mpg %>% filter(displ <= 4)
    displ2 <- mpg %>% filter(displ >= 5)
    head(displ1)
    
    mean(displ1$hwy)
    mean(displ2$hwy)
    
    # Q2.
    cty1 <- mpg %>% filter( cty<= 4)
    manufacturer1 <- mpg %>% filter(manufacturer == "audi")
    manufacturer2 <- mpg %>% filter(manufacturer == "toyota")
    
    mean(manufacturer1$cty)
    mean(manufacturer2$cty)
    
    # Q3.
    manufacturer3 <- mpg %>% filter(manufacturer == "chevrolet")
    manufacturer4 <- mpg %>% filter(manufacturer == "ford")
    manufacturer5 <- mpg %>% filter(manufacturer == "honda")
    
    mean(manufacturer3$hwy)
    mean(manufacturer4$hwy)
    mean(manufacturer5$hwy)
    
    mpg_new <- mpg %>% filter(manufacturer %in% c("chevrolet","ford","honda")) 
    mean(mpg_new$hwy)
    
    #=============================================================
    
    # select() 함수 : (테이블에서)열 선택하기기
    head(order_info_r)
    # order_info_r 테이블에서 reserv_no열과 reserv_no열을 선택하라
    order_info_r %>% select(reserv_no, sales)
    
    # math 추출
    exam %>% select(math)
    
    # class, math, english 변수 추출
    exam %>% select(class, math, english)
    
    # 변수 제외하기
    # math 제외하고 출력
    exam %>% select(-math)
    # math, english 제외하고 출력
    exam %>% select(-math,-english)
    
    # class가 1인 행만 추출한 다음 english 추출
    exam %>% filter(class == 1) %>% select(english)
    # 가독성
    exam %>% 
      filter(class == 1) %>% 
      select(english)
    
    # id, math 추출하고 앞부분 6행까지 추출
    exam %>% 
      select(id, math) %>% 
      head(6)
    
    # id, math 추출하고 앞부분 10행까지 추출
    exam %>% 
      select(id, math) %>% 
      head(10)
    
    # 혼자서 해보기 138p
    # Q1
    df <- mpg %>%
          select(class, cty)
    head(df,20)
    
    # Q2
    library(dplyr)
    df_suv <- df %>% filter(class == 'suv')
    df_suv
    df_compact <- df %>% filter(class == 'compact')
    df_compact
    mean(df_suv$cty)
    mean(df_compact$cty)
    
    

     

     

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading