Cleaning Data in R
Maggie Matsui
Content Developer @ DataCamp
Type of data | Example values |
---|---|
Names | "Veronica Hopkins" , "Josiah" , ... |
Phone numbers | "6171679912" , "(868) 949-4489" , ... |
Emails | "[email protected]" , "[email protected]" , ... |
Passwords | "JZY46TVG8SM" , "iamjosiah21" , ... |
Comments/Reviews | "great service!" , "This product broke after 2 days" , ... |
"6171679912"
vs. "(868) 949-4489"
"9239 5849 3712 0039"
vs. "4490459957881031"
+1 617-167-9912
vs. 617-167-9912
"Veronica Hopkins"
vs. "Josiah"
"0492"
is too short"19888"
doesn't existcustomers
# A tibble: 99 x 3
name company credit_card
<chr> <chr> <chr>
1 Galena In Magna Associates 5171 5854 8986 1916
2 MacKenzie Iaculis Ltd 5128-5078-8008-5824
3 Megan Acosta Semper LLC 5502 4529 0732 1744
4 Phoebe Delacruz Sit Amet Nulla Limited 5419-7308-7424-0944
5 Jessica Pellentesque Sed Ltd 5419 2949 5508 9530
# ... with 95 more rows
str_detect(customers$credit_card, "-")
FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE ...
customers %>%
filter(str_detect(credit_card, "-"))
name company credit_card
1 MacKenzie Iaculis Ltd 5128-5078-8008-5824
2 Phoebe Delacruz Sit Amet Nulla Limited 5419-7308-7424-0944
3 Abel Lorem PC 5211-6023-0805-0217
...
customers %>%
mutate(credit_card_spaces = str_replace_all(credit_card, "-", " "))
name company credit_card_spaces
1 Galena In Magna Associates 5171 5854 8986 1916
2 MacKenzie Iaculis Ltd 5128 5078 8008 5824
3 Megan Acosta Semper LLC 5502 4529 0732 1744
4 Phoebe Delacruz Sit Amet Nulla Limited 5419 7308 7424 0944
5 Jessica Pellentesque Sed Ltd 5419 2949 5508 9530
...
credit_card_clean <- customers$credit_card %>%
str_remove_all("-") %>% str_remove_all(" ")
customers %>% mutate(credit_card = credit_card_clean)
name company credit_card
1 Galena In Magna Associates 5171585489861916
2 MacKenzie Iaculis Ltd 5128507880085824
3 Megan Acosta Semper LLC 5502452907321744
...
str_length(customers$credit_card)
16 16 16 16 16 16 16 16 16 16 16 16 12 16 16 16 16 16 16 16 16 16 16 16 16 ...
customers %>%
filter(str_length(credit_card) != 16)
name company credit_card
1 Jerry Russell Sed Eu Company 516294099537
2 Ivor Christian Ut Tincidunt Incorporated 544571330015
3 Francesca Drake Etiam Consulting 517394144089
customers %>%
filter(str_length(credit_card) == 16)
name company credit_card
1 Galena In Magna Associates 5171585489861916
2 MacKenzie Iaculis Ltd 5128507880085824
3 Megan Acosta Semper LLC 5502452907321744
4 Phoebe Delacruz Sit Amet Nulla Limited 5419730874240944
5 Jessica Pellentesque Sed Ltd 5419294955089530
...
(
, )
, [
, ]
, $
, .
, +
, *
, and othersstringr
functions use regular expressionsfixed()
:str_detect(column, fixed("$"))
Learn more in String Manipulation with stringr in R & Intermediate Regular Expressions in R
Cleaning Data in R