고유성 제약

R로 데이터 정리하기

Maggie Matsui

Content Developer @ DataCamp

중복이란?

First name Last name Address Credit score
1 Miriam Day 6042 Sollicitudin Avenue 313
2 Miriam Day 6042 Sollicitudin Avenue 313

 

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit St 356
2 Tamekah Forbes P.O. Box 147, 511 Velit St 342
R로 데이터 정리하기

중복은 왜 발생하나요?

데이터 표가 열린 컴퓨터 화면. 데이터 입력 및 사람의 실수

R로 데이터 정리하기

중복은 왜 발생하나요?

버그 아이콘이 있는 컴퓨터. 버그 및 설계 오류.

R로 데이터 정리하기

중복은 왜 발생하나요?

5개 데이터베이스가 원을 이루고, 각자 화살표가 중앙의 더 큰 데이터베이스를 가리킴. 조인/병합 오류.

R로 데이터 정리하기

완전 중복

First name Last name Address Credit score
1 Harper Taylor P.O. Box 212, 6557 Nunc Road 655
2 Miriam Day 6042 Sollicitudin Avenue 313
3 Eagan Schmidt 507-6740 Cursus Avenue 728
4 Miriam Day 6042 Sollicitudin Avenue 313
5 Katell Roy Ap #434-4081 Mi Av. 455
6 Katell Roy Ap #434-4081 Mi Av. 455
... ... ... ... ...
R로 데이터 정리하기

완전 중복 찾기

duplicated(credit_scores)
FALSE FALSE FALSE TRUE FALSE ...
sum(duplicated(credit_scores))
2
R로 데이터 정리하기

완전 중복 찾기

filter(credit_scores, duplicated(credit_scores))
  first_name last_name                  address credit_score
1     Miriam       Day 6042 Sollicitudin Avenue          313
2     Katell       Roy      Ap #434-4081 Mi Av.          455
R로 데이터 정리하기

완전 중복 삭제

credit_scores_unique <- distinct(credit_scores)

sum(duplicated(credit_scores_unique))
0
R로 데이터 정리하기

부분 중복

First name Last name Address Credit score
1 Harper Taylor P.O. Box 212, 6557 Nunc Road 655
2 Eagan Schmidt 507-6740 Cursus Avenue 728
3 Tamekah Forbes P.O. Box 147, 511 Velit Street 356
4 Tamekah Forbes P.O. Box 147, 511 Velit Street 342
5 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620
6 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 636
... ... ... ... ...
R로 데이터 정리하기

부분 중복 찾기

credit_scores %>%

count(first_name, last_name) %>%
filter(n > 1)
  first_name last_name     n
  <fct>      <fct>     <int>
1 Katell     Roy           2
2 Miriam     Day           2
3 Tamekah    Forbes        2
4 Xandra     Barrett       2
R로 데이터 정리하기

부분 중복 찾기

dup_ids <- credit_scores %>%
  count(first_name, last_name) %>%
  filter(n > 1)

credit_scores %>% filter(first_name %in% dup_ids$first_name, last_name %in% dup_ids$last_name)
  first_name last_name                           address credit_score
1     Xandra   Barrett  P.O. Box 309, 2462 Pharetra, Rd.          620
2    Tamekah    Forbes    P.O. Box 147, 511 Velit Street          356
3     Miriam       Day          6042 Sollicitudin Avenue          313
4     Xandra   Barrett  P.O. Box 309, 2462 Pharetra, Rd.          636
5    Tamekah    Forbes    P.O. Box 147, 511 Velit Street          342
...
R로 데이터 정리하기

부분 중복 처리: 삭제

하나만 남기고 모두 삭제

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356
2 Tamekah Forbes P.O. Box 147, 511 Velit Street 342
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620
4 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 636
R로 데이터 정리하기

부분 중복 처리: 삭제

하나만 남기고 모두 삭제

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356
2
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620
4
R로 데이터 정리하기

부분 중복 처리: 삭제

하나만 남기고 모두 삭제

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620
R로 데이터 정리하기

부분 중복 삭제

credit_scores %>%
  distinct(first_name, last_name, .keep_all = TRUE)
    first_name   last_name                                address credit_score
1       Harlan      Hebert             P.O. Box 356, 3869 Non Av.          305
2        Drake        Soto                     643-1409 Ac Avenue          642
3        Felix     Morales                     741-1497 Velit Ave          780
4       Brynne     Charles                  313-3757 Ultrices St.          513
5       Aquila      Dillon      P.O. Box 945, 5550 Aliquam Street          748
...
R로 데이터 정리하기

부분 중복 처리: 요약

통계 요약 함수로 상이한 값 요약(mean(), max() 등)

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356
2 Tamekah Forbes P.O. Box 147, 511 Velit Street 342
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620
4 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 636
R로 데이터 정리하기

부분 중복 처리: 요약

통계 요약 함수로 상이한 값 요약(mean(), max() 등)

First name Last name Address Credit score Mean credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356 349
2 Tamekah Forbes P.O. Box 147, 511 Velit Street 342
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620 628
4 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 636
R로 데이터 정리하기

부분 중복 처리: 요약

통계 요약 함수로 상이한 값 요약(mean(), max() 등)

First name Last name Address Credit score Mean credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 356 349
2
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 620 628
4
R로 데이터 정리하기

부분 중복 처리: 요약

통계 요약 함수로 상이한 값 요약(mean(), max() 등)

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 349
2
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 628
4
R로 데이터 정리하기

부분 중복 처리: 요약

통계 요약 함수로 상이한 값 요약(mean(), max() 등)

First name Last name Address Credit score
1 Tamekah Forbes P.O. Box 147, 511 Velit Street 349
3 Xandra Barrett P.O. Box 309, 2462 Pharetra Rd. 628
R로 데이터 정리하기

부분 중복 요약

credit_scores %>%

group_by(first_name, last_name) %>%
mutate(mean_credit_score = mean(credit_score))
  first_name last_name address                          credit_score mean_score
1 Tamekah    Forbes    P.O. Box 147, 511 Velit Street            356        349
2 Tamekah    Forbes    P.O. Box 147, 511 Velit Street            342        349
3 Xandra     Barrett   P.O. Box 309, 2462 Pharetra, Rd.          636        628
4 Xandra     Barrett   P.O. Box 309, 2462 Pharetra, Rd.          620        628
5 Katell     Roy       Ap #434-4081 Mi Av.                       455        455
...
R로 데이터 정리하기

부분 중복 요약

credit_scores %>%
  group_by(first_name, last_name) %>%
  mutate(mean_credit_score = mean(credit_score)) %>%

distinct(first_name, last_name, .keep_all = TRUE) %>%
select(-credit_score)
  first_name last_name address                          mean_score
  <fct>      <fct>     <fct>                                 <dbl>
1 Tamekah    Forbes    P.O. Box 147, 511 Velit Street          349
2 Xandra     Barrett   P.O. Box 309, 2462 Pharetra, Rd.        628
3 Katell     Roy       Ap #434-4081 Mi Av.                     455
4 Miriam     Day       6042 Sollicitudin Avenue                313
...
R로 데이터 정리하기

연습해 봅시다!

R로 데이터 정리하기

Preparing Video For Download...