-
다양한 정형데이터 분석 기법들기타/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