4.4 filter()
함수를 이용한 행의 선택
4.4.1 filter()
함수의 기본 형식
filter(dataframe, filter condition 1, filter condition 2, …)
dataframe : 데이터 세트
filter condition : &(AND) 조건으로 행의 부분집합 선택. 조건을 컴마(‘
,
’)로 구분
4.4.2 단일 조건에 의한 행의 선택
Cars93_1
데이터 프레임에 차종(Type
)별로 보면 Compact 차종
이 총 16개 있음을 알 수 있습니다.
# number of cars by `Type`
table(Cars93_1$Type)
##
## Compact Large Midsize Small Sporty Van
## 16 11 22 21 14 9
# filter() : select a subset of rows in a data frame
filter(Cars93_1, Type == c("Compact"))
## Manufacturer Model Type Min.Price Price Max.Price MPG.city
## 1 Audi 90 Compact 25.9 29.1 32.3 20
## 2 Chevrolet Cavalier Compact 8.5 13.4 18.3 25
## 3 Chevrolet Corsica Compact 11.4 11.4 11.4 25
## 4 Chrysler LeBaron Compact 14.5 15.8 17.1 23
## 5 Dodge Spirit Compact 11.9 13.3 14.7 22
## 6 Ford Tempo Compact 10.4 11.3 12.2 22
## 7 Honda Accord Compact 13.8 17.5 21.2 24
## 8 Mazda 626 Compact 14.3 16.5 18.7 26
## 9 Mercedes-Benz 190E Compact 29.0 31.9 34.9 20
## 10 Nissan Altima Compact 13.0 15.7 18.3 24
## 11 Oldsmobile Achieva Compact 13.0 13.5 14.0 24
## 12 Pontiac Sunbird Compact 9.4 11.1 12.8 23
## 13 Saab 900 Compact 20.3 28.7 37.1 20
## 14 Subaru Legacy Compact 16.3 19.5 22.7 23
## 15 Volkswagen Passat Compact 17.6 20.0 22.4 21
## 16 Volvo 240 Compact 21.8 22.7 23.5 21
## MPG.highway
## 1 26
## 2 36
## 3 34
## 4 28
## 5 27
## 6 27
## 7 31
## 8 34
## 9 29
## 10 30
## 11 31
## 12 31
## 13 26
## 14 30
## 15 30
## 16 28
4.4.3 복수 조건을 AND(,
)로 결합한 행의 선택
행을 선택하는 조건이 여러 개이면 동시에 만족해야 하는 경우는 AND 연산에 의한 조건 결합으로 행을 선택한다. 예를 들어, 차종(Type
)이 “Compact
”이면서(Type == c(“Compact”)
) , 최대가격(Max.Price
)이 20 백$ 이하이고 (Max.Price <-20
), 고속도로 연비(MPG.highway
) 가 30 이상 (MPG.highway > 30
)인 관측치를 선택해 보자. 이 경우는 3개의 행 선택 조건이 모두 AND로 결합되는 것이다. 이때에는 이들 세 개의 조건식을 컴마(,
)로 구분해 주면 된다.
따라서 위의 문제를 dplyr
의 filter()
함수를 사용하여 나타내면 다음과 같다. 참고로, subset()
함수의 subset()
과 동일한 기능을 한다.
# filter() : select a subset of rows in a data frame
filter(Cars93_1, Type == c("Compact"), Max.Price <= 20, MPG.highway >= 30)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Chevrolet Cavalier Compact 8.5 13.4 18.3 25 36
## 2 Chevrolet Corsica Compact 11.4 11.4 11.4 25 34
## 3 Mazda 626 Compact 14.3 16.5 18.7 26 34
## 4 Nissan Altima Compact 13.0 15.7 18.3 24 30
## 5 Oldsmobile Achieva Compact 13.0 13.5 14.0 24 31
## 6 Pontiac Sunbird Compact 9.4 11.1 12.8 23 31
# 또는
%>%
Cars93_1 filter(Type == c("Compact"), Max.Price <= 20, MPG.highway >= 30)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Chevrolet Cavalier Compact 8.5 13.4 18.3 25 36
## 2 Chevrolet Corsica Compact 11.4 11.4 11.4 25 34
## 3 Mazda 626 Compact 14.3 16.5 18.7 26 34
## 4 Nissan Altima Compact 13.0 15.7 18.3 24 30
## 5 Oldsmobile Achieva Compact 13.0 13.5 14.0 24 31
## 6 Pontiac Sunbird Compact 9.4 11.1 12.8 23 31
- 세 개의 조건을 동시에 만족하는 관측치의 갯수는 6개임을 알 수 있다.
4.4.4 복수 조건을 OR(|
)로 결합한 행의 선택
filter(dataframe, filter condition 1 | filter condition 2 | …)
dataframe
: 데이터 세트filter condition 1
: 선택 조건 1|
: OR 조건 연산자
OR(또는) 조건으로 부분집합을 선별하려면 |
를 사용한다. (subset()
함수와 동일)
Cars93_1
데이터 세트의 차종(Type
)이 “Compact”이거나(|
: OR), 최대가격(Max.Price
)이 20 백$ 이하이거나(|
, OR) 고속도로 연비(MPG.highway
) 가 30 이상인 관측치 (행)을 선택해 보자. 즉, 3개의 검색 조건 중 하나라도 만족하면 그 행은 선택이 된다. 이때 이들 조건들을 OR 연산자인 |
를 사용하여 결합하다.
위의 문제는 dplyr
의 filter()
함수를 사용하면 다음과 같이 된다.
# filter(dataframe, condition1 | condition2) : or
filter(Cars93_1, Type == c("Compact") | Max.Price <= 20 | MPG.highway >= 30)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city
## 1 Acura Integra Small 12.9 15.9 18.8 25
## 2 Audi 90 Compact 25.9 29.1 32.3 20
## 3 BMW 535i Midsize 23.7 30.0 36.2 22
## 4 Buick Century Midsize 14.2 15.7 17.3 22
## 5 Chevrolet Cavalier Compact 8.5 13.4 18.3 25
## 6 Chevrolet Corsica Compact 11.4 11.4 11.4 25
## 7 Chevrolet Camaro Sporty 13.4 15.1 16.8 19
## 8 Chevrolet Lumina Midsize 13.4 15.9 18.4 21
## 9 Chevrolet Lumina_APV Van 14.7 16.3 18.0 18
## 10 Chevrolet Astro Van 14.7 16.6 18.6 15
## 11 Chevrolet Caprice Large 18.0 18.8 19.6 17
## 12 Chrylser Concorde Large 18.4 18.4 18.4 20
## 13 Chrysler LeBaron Compact 14.5 15.8 17.1 23
## 14 Dodge Colt Small 7.9 9.2 10.6 29
## 15 Dodge Shadow Small 8.4 11.3 14.2 23
## 16 Dodge Spirit Compact 11.9 13.3 14.7 22
## 17 Dodge Dynasty Midsize 14.8 15.6 16.4 21
## 18 Eagle Summit Small 7.9 12.2 16.5 29
## 19 Ford Festiva Small 6.9 7.4 7.9 31
## 20 Ford Escort Small 8.4 10.1 11.9 23
## 21 Ford Tempo Compact 10.4 11.3 12.2 22
## 22 Ford Probe Sporty 12.8 14.0 15.2 24
## 23 Ford Taurus Midsize 15.6 20.2 24.8 21
## 24 Geo Metro Small 6.7 8.4 10.0 46
## 25 Geo Storm Sporty 11.5 12.5 13.5 30
## 26 Honda Prelude Sporty 17.0 19.8 22.7 24
## 27 Honda Civic Small 8.4 12.1 15.8 42
## 28 Honda Accord Compact 13.8 17.5 21.2 24
## 29 Hyundai Excel Small 6.8 8.0 9.2 29
## 30 Hyundai Elantra Small 9.0 10.0 11.0 22
## 31 Hyundai Scoupe Sporty 9.1 10.0 11.0 26
## 32 Hyundai Sonata Midsize 12.4 13.9 15.3 20
## 33 Mazda 323 Small 7.4 8.3 9.1 29
## 34 Mazda Protege Small 10.9 11.6 12.3 28
## 35 Mazda 626 Compact 14.3 16.5 18.7 26
## 36 Mercedes-Benz 190E Compact 29.0 31.9 34.9 20
## 37 Mercury Capri Sporty 13.3 14.1 15.0 23
## 38 Mercury Cougar Midsize 14.9 14.9 14.9 19
## 39 Mitsubishi Mirage Small 7.7 10.3 12.9 29
## 40 Nissan Sentra Small 8.7 11.8 14.9 29
## 41 Nissan Altima Compact 13.0 15.7 18.3 24
## 42 Oldsmobile Achieva Compact 13.0 13.5 14.0 24
## 43 Oldsmobile Cutlass_Ciera Midsize 14.2 16.3 18.4 23
## 44 Oldsmobile Silhouette Van 19.5 19.5 19.5 18
## 45 Plymouth Laser Sporty 11.4 14.4 17.4 23
## 46 Pontiac LeMans Small 8.2 9.0 9.9 31
## 47 Pontiac Sunbird Compact 9.4 11.1 12.8 23
## 48 Saab 900 Compact 20.3 28.7 37.1 20
## 49 Saturn SL Small 9.2 11.1 12.9 28
## 50 Subaru Justy Small 7.3 8.4 9.5 33
## 51 Subaru Loyale Small 10.5 10.9 11.3 25
## 52 Subaru Legacy Compact 16.3 19.5 22.7 23
## 53 Suzuki Swift Small 7.3 8.6 10.0 39
## 54 Toyota Tercel Small 7.8 9.8 11.8 32
## 55 Toyota Celica Sporty 14.2 18.4 22.6 25
## 56 Volkswagen Fox Small 8.7 9.1 9.5 25
## 57 Volkswagen Passat Compact 17.6 20.0 22.4 21
## 58 Volvo 240 Compact 21.8 22.7 23.5 21
## MPG.highway
## 1 31
## 2 26
## 3 30
## 4 31
## 5 36
## 6 34
## 7 28
## 8 29
## 9 23
## 10 20
## 11 26
## 12 28
## 13 28
## 14 33
## 15 29
## 16 27
## 17 27
## 18 33
## 19 33
## 20 30
## 21 27
## 22 30
## 23 30
## 24 50
## 25 36
## 26 31
## 27 46
## 28 31
## 29 33
## 30 29
## 31 34
## 32 27
## 33 37
## 34 36
## 35 34
## 36 29
## 37 26
## 38 26
## 39 33
## 40 33
## 41 30
## 42 31
## 43 31
## 44 23
## 45 30
## 46 41
## 47 31
## 48 26
## 49 38
## 50 37
## 51 30
## 52 30
## 53 43
## 54 37
## 55 32
## 56 33
## 57 30
## 58 28
# 또는
%>%
Cars93_1 filter(Type == c("Compact") | Max.Price <= 20 | MPG.highway >= 30)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city
## 1 Acura Integra Small 12.9 15.9 18.8 25
## 2 Audi 90 Compact 25.9 29.1 32.3 20
## 3 BMW 535i Midsize 23.7 30.0 36.2 22
## 4 Buick Century Midsize 14.2 15.7 17.3 22
## 5 Chevrolet Cavalier Compact 8.5 13.4 18.3 25
## 6 Chevrolet Corsica Compact 11.4 11.4 11.4 25
## 7 Chevrolet Camaro Sporty 13.4 15.1 16.8 19
## 8 Chevrolet Lumina Midsize 13.4 15.9 18.4 21
## 9 Chevrolet Lumina_APV Van 14.7 16.3 18.0 18
## 10 Chevrolet Astro Van 14.7 16.6 18.6 15
## 11 Chevrolet Caprice Large 18.0 18.8 19.6 17
## 12 Chrylser Concorde Large 18.4 18.4 18.4 20
## 13 Chrysler LeBaron Compact 14.5 15.8 17.1 23
## 14 Dodge Colt Small 7.9 9.2 10.6 29
## 15 Dodge Shadow Small 8.4 11.3 14.2 23
## 16 Dodge Spirit Compact 11.9 13.3 14.7 22
## 17 Dodge Dynasty Midsize 14.8 15.6 16.4 21
## 18 Eagle Summit Small 7.9 12.2 16.5 29
## 19 Ford Festiva Small 6.9 7.4 7.9 31
## 20 Ford Escort Small 8.4 10.1 11.9 23
## 21 Ford Tempo Compact 10.4 11.3 12.2 22
## 22 Ford Probe Sporty 12.8 14.0 15.2 24
## 23 Ford Taurus Midsize 15.6 20.2 24.8 21
## 24 Geo Metro Small 6.7 8.4 10.0 46
## 25 Geo Storm Sporty 11.5 12.5 13.5 30
## 26 Honda Prelude Sporty 17.0 19.8 22.7 24
## 27 Honda Civic Small 8.4 12.1 15.8 42
## 28 Honda Accord Compact 13.8 17.5 21.2 24
## 29 Hyundai Excel Small 6.8 8.0 9.2 29
## 30 Hyundai Elantra Small 9.0 10.0 11.0 22
## 31 Hyundai Scoupe Sporty 9.1 10.0 11.0 26
## 32 Hyundai Sonata Midsize 12.4 13.9 15.3 20
## 33 Mazda 323 Small 7.4 8.3 9.1 29
## 34 Mazda Protege Small 10.9 11.6 12.3 28
## 35 Mazda 626 Compact 14.3 16.5 18.7 26
## 36 Mercedes-Benz 190E Compact 29.0 31.9 34.9 20
## 37 Mercury Capri Sporty 13.3 14.1 15.0 23
## 38 Mercury Cougar Midsize 14.9 14.9 14.9 19
## 39 Mitsubishi Mirage Small 7.7 10.3 12.9 29
## 40 Nissan Sentra Small 8.7 11.8 14.9 29
## 41 Nissan Altima Compact 13.0 15.7 18.3 24
## 42 Oldsmobile Achieva Compact 13.0 13.5 14.0 24
## 43 Oldsmobile Cutlass_Ciera Midsize 14.2 16.3 18.4 23
## 44 Oldsmobile Silhouette Van 19.5 19.5 19.5 18
## 45 Plymouth Laser Sporty 11.4 14.4 17.4 23
## 46 Pontiac LeMans Small 8.2 9.0 9.9 31
## 47 Pontiac Sunbird Compact 9.4 11.1 12.8 23
## 48 Saab 900 Compact 20.3 28.7 37.1 20
## 49 Saturn SL Small 9.2 11.1 12.9 28
## 50 Subaru Justy Small 7.3 8.4 9.5 33
## 51 Subaru Loyale Small 10.5 10.9 11.3 25
## 52 Subaru Legacy Compact 16.3 19.5 22.7 23
## 53 Suzuki Swift Small 7.3 8.6 10.0 39
## 54 Toyota Tercel Small 7.8 9.8 11.8 32
## 55 Toyota Celica Sporty 14.2 18.4 22.6 25
## 56 Volkswagen Fox Small 8.7 9.1 9.5 25
## 57 Volkswagen Passat Compact 17.6 20.0 22.4 21
## 58 Volvo 240 Compact 21.8 22.7 23.5 21
## MPG.highway
## 1 31
## 2 26
## 3 30
## 4 31
## 5 36
## 6 34
## 7 28
## 8 29
## 9 23
## 10 20
## 11 26
## 12 28
## 13 28
## 14 33
## 15 29
## 16 27
## 17 27
## 18 33
## 19 33
## 20 30
## 21 27
## 22 30
## 23 30
## 24 50
## 25 36
## 26 31
## 27 46
## 28 31
## 29 33
## 30 29
## 31 34
## 32 27
## 33 37
## 34 36
## 35 34
## 36 29
## 37 26
## 38 26
## 39 33
## 40 33
## 41 30
## 42 31
## 43 31
## 44 23
## 45 30
## 46 41
## 47 31
## 48 26
## 49 38
## 50 37
## 51 30
## 52 30
## 53 43
## 54 37
## 55 32
## 56 33
## 57 30
## 58 28
- 위의 3가지 조건을 OR로 만족시키는 관측치의 갯수는 58개 임을 알 수 있다.
4.4.5 행의 위치를 지정해서 행의 데이터 부분집합 선택
slice(dataframe, from, to)
dataframe
: 데이터 세트
from
: 시작 위치
to
: 마지막 위치
filter()
가 조건에 의한 행의 선택이었다면, 위치(position)를 사용한 행의 선택을 위해서는 slice()
함수를 사용한다.
Cars93_1
데이터 세트의 6번째에서 10번째 행(row)의 데이터를 선택해 보자.
# slice() : select rows by position
slice(Cars93_1, 6:10)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city
## 1 Buick Century Midsize 14.2 15.7 17.3 22
## 2 Buick LeSabre Large 19.9 20.8 21.7 19
## 3 Buick Roadmaster Large 22.6 23.7 24.9 16
## 4 Buick Riviera Midsize 26.3 26.3 26.3 19
## 5 Cadillac DeVille Large 33.0 34.7 36.3 16
## MPG.highway
## 1 31
## 2 28
## 3 25
## 4 27
## 5 25
# 또는
%>%
Cars93_1 slice(6:10)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city
## 1 Buick Century Midsize 14.2 15.7 17.3 22
## 2 Buick LeSabre Large 19.9 20.8 21.7 19
## 3 Buick Roadmaster Large 22.6 23.7 24.9 16
## 4 Buick Riviera Midsize 26.3 26.3 26.3 19
## 5 Cadillac DeVille Large 33.0 34.7 36.3 16
## MPG.highway
## 1 31
## 2 28
## 3 25
## 4 27
## 5 25
- 6번쨰 행부터 10번쨰 행까지를 선택하게 된다.