일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬
- 노마쌤
- R
- 함수
- CSS
- 인덱스
- 정수인코딩
- Filter
- JS
- 노마쌤과 즐거운 영어 습관
- HTML
- NLP
- 행렬
- DOMAPI
- 매일영어습관
- 노트list
- 벡터
- Mac konlpy
- 명령어
- Ajax프레임워크
- EC2
- 질의확장
- 웹폰트
- DOM
- 프로토콜
- 유의수준
- Ajax
- 클러스터링기법
- 신뢰구간
- 자기지도학습
- Today
- Total
채니의 개발일기
R - 4 . dplyr()함수 : 데이터 병합, 데이터샘플링,중복데이터,중복데이터제거 본문
filter()
2023.06.21 - [R기초] - R - 1. dplyr()함수 :filter, select,mutate -> filter함수 설명
R - 1. dplyr()함수 :filter, select,mutate
dplyr()함수 - 데이터 조작과 변형을 위해 설계된 패키지 - 데이터프레임이나 테이블 형태의 데이터를 보다 쉽고 효율적으로 다룰 수 있도록 다양한 함수와 도구를 제공 dplyr의 대표적으로 사용되
xcwaonvy.tistory.com
• filter : %in% 연산자 -> 특정 열의 값이 주어진 값들 중 하나와 일치하는지 여부를 판단하는데 사용
filter(df, column_name %in% c(value1, value2, value3))
-in 연산자를 활용하여 Audi1과 Audi2 데이터 프레임생성
Audi1 =Audi %>%
group_by(model)%>%
summarise(count =n())%>%
filter(model %in% c(' A1',' A2',' A3',' A4'))
Audi1
Audi2 =Audi %>%
group_by(model)%>%
summarise(price_m= mean(price))%>%
filter(model %in% c(' A3',' A4',' A5',' A6'))
Audi2
- 결과
# A tibble: 4 × 3
model count price_m
<chr> <int> <dbl>
1 " A1" 1347 NA
2 " A2" 1 NA
3 " A3" 1929 NA
4 " A4" 1381 NA
# A tibble: 4 × 2
model price_m
<chr> <dbl>
1 " A3" 17409.
2 " A4" 20255.
3 " A5" 23577.
4 " A6" 22695.
데이터 병합
left_join() 함수:
left_join(df1, df2, by = "key")
- 왼쪽 데이터 프레임(df1)과 오른쪽 데이터 프레임(df2)을 key 열을 기준으로 결합
- 왼쪽 데이터 프레임(df1)의 모든 행을 유지하면서, 오른쪽 데이터 프레임(df2)과 일치하는 행만 결합
- key 열 = 두 데이터 프레임에서 공통된 값
-Audi1에 left_join ()함수적용 : Adui1의 행을 유지하면서 Audi2의 일치하는 행만 결합
Audi_left = Audi1%>%
left_join(Audi2, by='model')
Audi_left
# A tibble: 4 × 3
model count price_m
<chr> <int> <dbl>
1 " A1" 1347 NA
2 " A2" 1 NA
3 " A3" 1929 17409.
4 " A4" 1381 20255.
right_join() 함수
right_join(df1, df2, by = "key")
- 왼쪽 데이터 프레임(df1)과 오른쪽 데이터 프레임(df2)을 key 열을 기준으로 결합합니다.
- 오른쪽 데이터 프레임의 모든 행을 유지하면서, 왼쪽 데이터 프레임과 일치하는 행만 결합
- key 열 = 두 데이터 프레임에서 공통된 값
-Audi1에 right_join ()함수적용 : Adui2의 행을 유지하면서 Audi1의 일치하는 행만 결합
Audi_right = Audi1 %>%
right_join(Audi2, by = 'model')
Audi_right
# A tibble: 4 × 3
model count price_m
<chr> <int> <dbl>
1 " A3" 1929 17409.
2 " A4" 1381 20255.
3 " A5" NA 23577.
4 " A6" NA 22695.
full_join()함수: 전체 행 합치기
Audi_full = Audi1%>%
full_join(Audi2, by='model')
Audi_full
# A tibble: 6 × 3
model count price_m
<chr> <int> <dbl>
1 " A1" 1347 NA
2 " A2" 1 NA
3 " A3" 1929 17409.
4 " A4" 1381 20255.
5 " A5" NA 23577.
6 " A6" NA 22695.
데이터 샘플링
sample 함수: 데이터 프레임 또는 테이블에서 지정된 개수의 무작위 행을 추출하는 함수
함수로드
sample_n(data, size, replace = FALSE, weight = NULL)
- data: 추출할 행을 포함하는 데이터 프레임
- size: 추출할 행의 개수
- replace: 추출할 때 중복을 허용할지 여부를 나타내는 논리값-> 기본값은 FALSE(중복된 행 실행 x), TRUE(중복허용)
- weight: 선택된 행의 가중치를 지정하는 열. 해당 열에 지정된 가중치에 따라 행이 선택. 기본값은 NULL
1.sampe_n : 샘플데이터 갯수지정
set.seed(123)
Audi3 = Audi%>%
sample_n(size =5)
Audi3
-> set.seed(123) = 난수를 생성하는 알고리즘
model year price transmission mileage fuelType tax mpg engineSize
1 A4 2017 19220 Manual 14378 Diesel 30 67.3 2.0
2 Q5 2016 28698 Automatic 44419 Diesel 235 42.2 3.0
3 A4 2018 20290 Automatic 19450 Petrol 150 50.4 1.4
4 A3 2018 14500 Semi-Auto 22496 Diesel 145 72.4 1.6
5 TT 2015 16406 Semi-Auto 12123 Petrol 160 44.8 2.0
2. group_by 지정후 데이터 추출
set.seed(123)
Audi4 = Audi%>%
group_by(transmission)%>%
sample_n(size =3)
Audi4
결과: transmission의 각 변수를 3개씩 추출
# A tibble: 9 × 9
# Groups: transmission [3]
model year price transmission mileage fuelType tax mpg engineSize
<chr> <int> <int> <chr> <int> <chr> <int> <dbl> <dbl>
1 " A4" 2019 24199 Automatic 4035 Diesel 145 50.4 2
2 " Q5" 2019 34000 Automatic 5492 Diesel 145 38.2 2
3 " A8" 2019 41606 Automatic 2117 Diesel 145 40.4 3
4 " A3" 2018 21499 Manual 4012 Petrol 150 42.2 1.5
5 " Q2" 2019 21512 Manual 12 Diesel 145 49.6 1.6
6 " Q3" 2015 16450 Manual 37182 Diesel 160 49.6 2
7 " Q5" 2019 43990 Semi-Auto 5593 Diesel 145 36.2 2
8 " A3" 2019 32490 Semi-Auto 318 Petrol 150 33.2 2
9 " A3" 2016 15491 Semi-Auto 55561 Petrol 125 48.7 2
3. 비율로 추출 : sample_frac
set.seed(123)
Audi5 = Audi%>%
sample_frac(size = 0.3)
Audi5
4.중복데이터처리
set.seed(1234)
Audi6 = Audi %>%
mutate(Unique_key =1:nrow(Audi))%>%
sample_frac(size = 1.5,replace = TRUE)
Audi6
mutate(Unique_key =1:nrow(Audi)) : 1에서 Audi의 행의 수까지 순차적으로 벡터생성
sample_frac(size = 1.5,replace = TRUE) : 원래 데이터프레임에 1.5배의 크기로 생성, replace=True로 중복생성
5.dupulicate() = 중복확인함수
duplicated(Audi6$Unique_key)
sum(duplicated(Audi6$Unique_key))
- 중복확인함수 확인하기
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[18] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[35] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[52] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[69] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[86] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[103] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[120] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[137] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[154] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[171] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[188] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[222] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[239] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[256] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[273] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[290] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[307] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[324] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[341] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[358] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[375] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[392] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[409] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[426] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[443] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[460] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[477] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[494] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[511] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[528] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[545] FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[562] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[579] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[596] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[613] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[630] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[647] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[664] FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
[681] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[698] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[715] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[732] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[749] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[766] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[783] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[800] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[817] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[834] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[851] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[868] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[885] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[902] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[919] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
[936] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
[953] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[970] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[987] FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[ reached getOption("max.print") -- omitted 15002 entries ]
> sum(duplicated(Audi6$Unique_key))
[1] 7727
:Audi6$unique_key의 중복된 함수 갯수는 7727인것을 알 수 있음(True의 갯수 = 7727)
6.중복데이터제거 - distinct()
distinct() 함수: dplyr 패키지에서 제공되는 함수로, 데이터 프레임에서 고유한(unique) 행만 선택하는 역할을
Aud6_1 = Audi6 %>%
distinct(Unique_key,.keep_all = TRUE)
Aud6_1
distinct(Unique_keyf를 기준으로 중복제거, .keep_all=True: 중복이 발생한 행 중 하나를 남기면서 나머지 열의 값들을 유지)
사용데이터
100,000 UK Used Car Data set | Kaggle
100,000 UK Used Car Data set
100,000 scraped used car listings, cleaned and split into car make.
www.kaggle.com
- Audi 데이터 로드
DIR = "/Users/yunchaewon/Desktop/r-data analysis/Rbasic/UsedCar/"
Audi = read.csv(paste0(DIR, "Audi.csv"),stringsAsFactors = FALSE)
str(Audi)
- 데이터 설명
data.frame': 10668 obs. of 9 variables:
$ model : chr " A1" " A6" " A1" " A4" ...
$ year : int 2017 2016 2016 2017 2019 2016 2016 2016 2015 2016 ...
$ price : int 12500 16500 11000 16800 17300 13900 13250 11750 10200 12000 ...
$ transmission: chr "Manual" "Automatic" "Manual" "Automatic" ...
$ mileage : int 15735 36203 29946 25952 1998 32260 76788 75185 46112 22451 ...
$ fuelType : chr "Petrol" "Diesel" "Petrol" "Diesel" ...
$ tax : int 150 20 30 145 145 30 30 20 20 30 ...
$ mpg : num 55.4 64.2 55.4 67.3 49.6 58.9 61.4 70.6 60.1 55.4 ...
$ engineSize : num 1.4 2 1.4 2 1 1.4 2 2 1.4 1.4 ...
- model: 자동차 모델을
- year: 자동차의 연식을
- price: 자동차의 가격
- transmission: 자동차의 변속기 종류
- mileage: 자동차의 주행 거리
- fuelType: 자동차의 연료 종류
- tax: 자동차에 부과되는 세금
- mpg: 자동차의 연비
- engineSize: 자동차의 엔진 크기
'프로그래밍언어 > R기초' 카테고리의 다른 글
R - 파일 목록 반환: list.files (0) | 2023.06.24 |
---|---|
R - $ 연산자 (0) | 2023.06.23 |
R - 3 . dplyr()함수 : 정렬하기(arrange함수),최상위출력(top_n) (0) | 2023.06.23 |
R - 엑셀파일 읽기 (0) | 2023.06.21 |
R - 2 . dplyr()함수 : groupby, summarise (0) | 2023.06.21 |