반응형
R duplicatd 함수
1. duplicated 함수
duplicated 함수는 반복적으로 나타나는 요소를 보여주는 함수입니다.
함수의 결과 형태는 논리형 벡터(Logical vector)로 나타납니다.
# 1~4의 반복요소 만들기 dup <- c(1,1,1,1,2,2,2,2,2,3,3,4,4) dup [1] 1 1 1 1 2 2 2 2 2 3 3 4 4 # duplicated 함수 적용 duplicated(dup) [1] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE |
dup에 1부터 4까지의 요소가 저장되어 있습니다.
- 1: 4개
- 2: 5개
- 3: 2개
- 4: 2개
이 벡터(dup)에 duplicated 함수를 적용하면 아래처럼 논리 연산자가 산출됩니다.
[1] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
여기에 우리가 만든 dup 벡터를 적용하면 아래처럼 나타낼 수 있습니다.
1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 4 | 4 |
FALSE | TRUE | TRUE | TRUE | FALSE | TRUE | TRUE | TRUE | TRUE | FALSE | TRUE | FALSE | TRUE |
뭔가 공통점이 보이나요?
반복되는 요소 중에 가장 처음 나타난 값이 FALSE로 반환되고 그 이후에는 TRUE로 반환됩니다.
# dup 벡터에서 반복된 값을 추출하기 # duplicated 함수를 적용한 것을 'dup_logic' 이라는 이름으로 저장 dup_logic <- duplicated(dup) # 반복값 추출 -> 벡터 subsetting 이용 -> 위에서 TRUE로 반환된 숫자들이 나옴. dup[dup_logic] [1] 1 1 1 2 2 2 2 3 4 |
여기서 중복된 요소를 하나씩만 추출하려면 다음같이 합니다.
duplicated(dup) [1] FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE # 방법1. # 느낌표(!)를 붙이면 논리형 연산자들이 반대로 나오죠 # TRUE -> FALSE // FALSE->TRUE !duplicated(dup) [1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE dup[ !duplicated(dup) ] [1] 1 2 3 4 # 방법2. # unique 함수 이용 dup_logic <- duplicated(dup) dup[dup_logic] [1] 1 1 1 2 2 2 2 3 4 # 이 결과에 unique 함수를 취하면 unique(dup[dup_logic]) [1] 1 2 3 4 |
2. 데이터프레임에 duplicated 적용해보기
그럼 ~ R에선 데이터프레임 쓸 일이 많으니 함 적용해볼게요
# 데이터프레임 생성 dup_data <- data.frame(item = c("책",'가방','연필','지우개','지우개','연필'), price = c(1000,2000,3000,4000,4000,2000)) dup_data item price 1 책 1000 2 가방 2000 3 연필 3000 4 지우개 4000 5 지우개 4000 6 연필 2000 |
위 데이터를 보면 (지우개,4000) 이 중복된 행이 있네요.
요런 놈들을 제거해볼게요.
# duplicated 함수 duplicated(dup_data) # '행'단위로 반복된 행이 있는지를 TRUE or FALSE 형태로 나옴 [1] FALSE FALSE FALSE FALSE TRUE FALSE # 앞에 느낌표를 붙여서 반대로 만들기 !duplicated(dup_data) [1] TRUE TRUE TRUE TRUE FALSE TRUE # subsetting 을 통해 중복되지 않은 행을 추출 # 데이터프레임의 subsetting을 할 시에는 행단위로 참/거짓을 판단 -->> 즉, dataset[논리형벡터, ] dup_data [ !duplicated(dup_data), ] # 다섯번째 행이 FALSE로 반환되었으니까 빼고 추출됨 item price 1 책 1000 2 가방 2000 3 연필 3000 4 지우개 4000 6 연필 2000 |
반응형
'데이터 분석 > R 데이터 처리 & 분석' 카테고리의 다른 글
[R] separate_longer_delim 함수 (구분자로 된 변수 처리하기) (0) | 2023.06.06 |
---|---|
[R] merge 함수를 이용한 조인 (데이터셋 결합) (1) | 2023.05.16 |
[R] seq 함수 (숫자 연속으로 나열하기) (0) | 2022.09.30 |
[R] rep 함수 (반복적으로 값 산출하기) (0) | 2022.07.03 |
[R] 작업 디렉토리에서 파일 찾기 및 변수 할당하기 (0) | 2021.11.04 |