ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 다양한 정형데이터 분석 기법들
    기타/R(아르) 2021. 2. 19. 14:22

    패키지를 설치해야 아래 함수를 사용 할 수 있다

     

    install.packages("dplyr")
    library("dplyr")

     


    원하는 조건의 행만 출력하기

    filter()

     

    타율이 0.35가 넘는 사람만 출력

    a = filter(data1, 타율>0.35)

    홈럼이 30개 초과, 타점이 홈런이 30개 초과하고 타점이 115점 이상인 선수 (and연산)

    b= filter(data1, 홈런>30 & 타점>=115)

    #홈런이 30개 초화하거나 타점이 115점 이상인 선수 정보(or연산)

    c=filter(data1, 홈런>30 | 타점>=115)

     

    행으로 잘라주는 

    slice()

     

    1~5행만 출력

    slice(data1,1:5)

    1,3,5,6,7 행만 출력

    slice(data1, 1, 3, 5,6,7)

    백터로 묶어서 출력

    slice(data1,c(1,3,5,6,7))

    백터 안에 범위를 정해서 출력

    slice(data1,c(1:5, 11:15, 21))

     


    원하는 컬럼만 출력하는 select

     

    순위, 선수명, 팀명 컬럼만 출력

    d = select(data1, 순위, 선수명, 팀명)

    head를 사용하면 제일 위에 행 부터 지정 범위까지만 출력

    위에서부터 10행 출력

    head(d, 10)

    복합적으로도 쓸 수 있다

    순위, 선수, 팀명 컬럼을 3행까지만 보여줘라

    head(select(data1, 순위, 선수명, 팀명),3)

     


    특정 컬럼만 제외하고 출력

    '-'는 해당 컬럼을 제외하고 출력하라는 뜻

     

    팀명, 홈런, 타점 컬럼은 제외하고 1,3,5,7 행을 출력해라

    slice (select(data1,-팀명, -홈런,-타점),c(1,3,5,7))

    팀명, 홈런, 타점 컬럼은 제외하고 1~5행까지 출력해라

    head(select(data1, -팀명,-홈런,-타점),5)

     

     


    특정 단어로 시작하는 컬럼만 보기

     

    x로 시작하는 컬럼만 보기

    select(data1,starts_with("x"))

    '타'로 끝나는 컬럼만 보이기

    select(data1,ends_with("타"),5)

    #'타'가 들어가는 모든 컬럼 보이기

    head(select(data1, contains("타")),5)

    선수명과 '타'를 포함한 모든 컬럼 보이기

    head(select(data1, 선수명,contains("타")),5)

     


    파이프라인 연산자 사용하기

    명령어 연결하기 %>% 사용해서 연결한다

     

    data1 데이터프레임에서

    선수명, 팀명, 홈럼 컬럼을 선택

    홈런이 20개 이상인 사람

    홈런 갯수를 내림차순으로 정렬

    1~3행까지만 표시한다

    data1 %>%
      select(선수명, 팀명, 홈런) %>%
      filter(홈런>=20) %>%
      arrange(desc(홈런)) %>%
      slice(1:3)

     

    mutate 사용 (새로운 컬럼 추가)

     

    data1 데이터프레임에서

    선수명, 팀명, 홈롬, 타수, 경기수 컬럼 선택

    평균타수 = 조건 컬럼 생성

    홈런을 20이상 친 사람들

    홈런 갯수 내림차순 정렬

    1~5행까지만 출력

    data1 %>%
      select(선수명, 팀명, 홈런,타수,경기수) %>%
      mutate(평균타수 = 타수/경기수) %>%
      filter(홈런>=20) %>%
      arrange(desc(홈런)) %>%
      slice(1:5)

     

     transmute 사용 (명시한 컬럼만 나온다)

     

    data1 데이터프레임에서

    선수명, 팀명, 홈런, 타수, 경기수 컬럼을 선택

    홈런 갯수로 내림차순 정렬

    홈런을 20개 이상 친 사람만

    선수명, 평균타수 컬럼만 출력

    1~5행까지만 출력

    data1 %>%
      select(선수명, 팀명, 홈런,타수,경기수) %>%
      arrange(desc(홈런)) %>%
      filter(홈런>=20) %>%
      transmute(선수명,평균타수 = 타수/경기수) %>%
      slice(1:5)

     

    rename() 함수 - 컬럼이름 바꾸기

    data.frame(name=data1$선수명, team=data1$팀명)

     

    distinct(), unique 함수 - unique한 자료수 카운트 하기

     

    팀명을 중복없이 출력

    distinct(data1,팀명)
    unique(data1$팀명)

     

    중복없이 팀명 갯수를 출력

    nrow(distinct(data1,팀명))
    length(unique(data1$팀명))

     


    자동 샘플 추출하기 (랜덤 추출)

     

    모든 행의 1~3컬럼중 5개의 자료만 추출

    sample_n(data1[,1:3],5)

     

    모든 행의 1~3컬럼중 10% 자료만 랜덤 추출

    sample_frac(data1[,1:3],0.1)

     

     


    요약정보 만들기 summarise() 함수

    na.rm = T ~NA(null)를 만나면 그 값은 지워라

     

    data1 데이터 프레임 안에서

    타수의 평균 = 평균타수, 득점의 평균 = 평균득점

    표시해라

    summarise(data1,평균타수=mean(타수,na.rm=T),평균득점=mean(득점,na.rm=T))
      평균타수 평균득점
    1 483.8667     85.7

     

     


    연습문제

     

    차종이 Compact

    최대 가격이 20달러 이하

    고속도로 연비가 30이상인 차동차를 출력

    ex_cars %>%
      filter(Type == "Compact" & Max.Price<=20 & MPG.highway > 30)

     

    차종이 Compact 또는

    최대가격이 20이하 또는

    고속도로 연비가 30이상인 

    자동차를 출력

    ex_cars %>%
      filter(Type == "Compact" | Max.Price<=20 | MPG.highway > 30)

     

    고속도로 연비가 높은 순서대로 정렬

    만약 고속도로 연비가 동일하다면

    최고가격이 낮은 순서대로 정렬

    ex_cars %>%
      arrange(desc(MPG.highway), Max.Price)

     

    제조사명, 최대가격, 고속도로연비 3개의 라벨 데이터를 출력

    select(ex_cars, Manufacturer,Min.Price,MPG.highway)

     

    MPG로 시작하는 모든 라벨의 데이터 출력

    select(ex_cars,starts_with("MPG"))

     

    Price로 끝나는 모든 단어

    select(ex_cars,ends_with("Price"))

     

    P를 포함하는 모든 라벨의 데이터

    select(ex_cars,contains("P"))

     

    데이터프레임의 8개 라벨명 앞에 'New_'라는 접두사를 붙여 바꾸기

    ex_cars2 = data.frame(
      New_Manufacturer=ex_cars$Manufacturer, 동일방법)

     

    1~5 컬럼에서 무작위 10개 샘플데이터 추출

    sample_n(ex_cars[,1:5],10)

     

    기존 라벨명을 유지하면서

    최대가격-최소가격의 값

    비율을 값을 가진 새로운 라벨을 생성

    새로운 라벨의 이름은 Price_Min_Max_ratio

    ex_cars[,"Price_Min_Max_ratio"] = ex_cars$Max.Price-ex_cars$Min.Price

    '기타 > R(아르)' 카테고리의 다른 글

    연습문제 - 함수만들기 while, if, for 문  (0) 2021.02.18
    연습문제2 다양한 자료 불러오기  (0) 2021.02.17
    연습문제 정리1  (0) 2021.02.16

    댓글

Designed by Tistory.