4.7 distinct()
함수를 이용한 유일한 값 추출
4.7.1 distinct()
함수의 기본 형식
distinct(dataframe, var1, var2, ...)
dataframe
: 데이터 세트var1, var2, ...
: 중복이 없는 유일한 값(unique, distinct value)을 추출하고자 하는 기준이 되는 컬럼(변수)
base
패키지의 unique()
함수와 같은 기능을 수행하지만, dplyr
패키지의 distinct()
가 C 언어로 작성이 되어 있기 때문에 속도는 훨씬 빠르다.
4.7.2 단일 기준에 의한 유일 값 추출
Cars93_1
데이터 프레임에서 ‘차종(Type
)’과 ’생산국-미국여부(Origin
)’ 변수를 기준으로 중복없는 유일한 값을 추출해 보자.
# to use Cars93 dataframe
names(Cars93)
## [1] "Manufacturer" "Model" "Type"
## [4] "Min.Price" "Price" "Max.Price"
## [7] "MPG.city" "MPG.highway" "AirBags"
## [10] "DriveTrain" "Cylinders" "EngineSize"
## [13] "Horsepower" "RPM" "Rev.per.mile"
## [16] "Man.trans.avail" "Fuel.tank.capacity" "Passengers"
## [19] "Length" "Wheelbase" "Width"
## [22] "Turn.circle" "Rear.seat.room" "Luggage.room"
## [25] "Weight" "Origin" "Make"
# distinct(dataframe, var1) : find unique values of var1 in a table
distinct(Cars93, Type)
## Type
## 1 Small
## 2 Midsize
## 3 Compact
## 4 Large
## 5 Sporty
## 6 Van
distinct(Cars93, Origin)
## Origin
## 1 non-USA
## 2 USA
# 또는
%>% distinct(Type) Cars93
## Type
## 1 Small
## 2 Midsize
## 3 Compact
## 4 Large
## 5 Sporty
## 6 Van
%>% distinct(Origin) Cars93
## Origin
## 1 non-USA
## 2 USA
distinct()
함수의 결과는 데이터 프레임으로 출력이 된다.
4.7.3 복수 기준에 의한 유일 값 추출
Cars93_1
데이터 프레임에서 ‘차종(Type
)’과 ’생산국-미국여부(Origin
)’ 변수를 동시에 고려하여 중복없는 유일한 값을 추출해 보자.
# distinct(dataframe, var1, var2) : find unique values in a table
distinct(Cars93, Type, Origin)
## Type Origin
## 1 Small non-USA
## 2 Midsize non-USA
## 3 Compact non-USA
## 4 Midsize USA
## 5 Large USA
## 6 Compact USA
## 7 Sporty USA
## 8 Van USA
## 9 Small USA
## 10 Sporty non-USA
## 11 Van non-USA
distinct(Cars93, Origin, Type)
## Type Origin
## 1 Small non-USA
## 2 Midsize non-USA
## 3 Compact non-USA
## 4 Midsize USA
## 5 Large USA
## 6 Compact USA
## 7 Sporty USA
## 8 Van USA
## 9 Small USA
## 10 Sporty non-USA
## 11 Van non-USA
# 또는
%>% distinct(Type, Origin) Cars93
## Type Origin
## 1 Small non-USA
## 2 Midsize non-USA
## 3 Compact non-USA
## 4 Midsize USA
## 5 Large USA
## 6 Compact USA
## 7 Sporty USA
## 8 Van USA
## 9 Small USA
## 10 Sporty non-USA
## 11 Van non-USA
%>% distinct(Origin, Type) Cars93
## Type Origin
## 1 Small non-USA
## 2 Midsize non-USA
## 3 Compact non-USA
## 4 Midsize USA
## 5 Large USA
## 6 Compact USA
## 7 Sporty USA
## 8 Van USA
## 9 Small USA
## 10 Sporty non-USA
## 11 Van non-USA
참고로, base
패키지의 unique()
함수로는 unique(Cars93[, c("Origin", "Type")])
이렇게 입력하면 된다.
# unique() 함수의 사용
unique(Cars93[, c("Origin")])
## [1] non-USA USA
## Levels: USA non-USA
unique(Cars93[, c("Type")])
## [1] Small Midsize Compact Large Sporty Van
## Levels: Compact Large Midsize Small Sporty Van
unique(Cars93[, c("Origin", "Type")])
## Origin Type
## 1 non-USA Small
## 2 non-USA Midsize
## 3 non-USA Compact
## 6 USA Midsize
## 7 USA Large
## 12 USA Compact
## 14 USA Sporty
## 16 USA Van
## 23 USA Small
## 40 non-USA Sporty
## 56 non-USA Van
unique(Cars93[, c("Type", "Origin")])
## Type Origin
## 1 Small non-USA
## 2 Midsize non-USA
## 3 Compact non-USA
## 6 Midsize USA
## 7 Large USA
## 12 Compact USA
## 14 Sporty USA
## 16 Van USA
## 23 Small USA
## 40 Sporty non-USA
## 56 Van non-USA
unique()
함수의 결과는 기준 컬럼이 하나일 때는 factor 형으로, 기준 컬럼이 여러 개일 때는 데이터 프레임 형태로 출력이 된다.