Manipulowanie ciągami znaków
Lekcja 12 z 14 w kursie Manipulowanie danymi w R w Coddy.
Pakiet stringr udostępnia kompleksowy zestaw funkcji do pracy z ciągami znaków.
Ładowanie pakietu stringr
library(stringr)Dopasowywanie wzorców
Funkcja str_detect() sprawdza, czy ciąg znaków zawiera wzorzec:
text <- c("apple", "banana", "cherry")
str_detect(text, "an") # Zwraca: FALSE TRUE FALSEZastępowanie ciągów znaków
Funkcja str_replace() zastępuje pierwsze wystąpienie wzorca:
text <- "Hello world"
str_replace(text, "world", "R") # Zwraca: "Hello R"Dzielenie ciągów znaków
Podziel ciągi znaków na wektor znakowy za pomocą funkcji str_split():
text <- "apple,banana,cherry"
str_split(text, ",") # Zwraca listę: list("apple", "banana", "cherry")Usuwanie białych znaków
Usuń początkowe i końcowe białe znaki za pomocą funkcji str_trim():
text <- " Hello, R! "
str_trim(text) # Zwraca: "Hello, R!"Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyUtwórz funkcję, która przetwarza listę adresów e-mail za pomocą technik manipulowania ciągami znaków z pakietu stringr. Funkcja powinna wykonywać następujące operacje:
- Wyodrębnij nazwę użytkownika (część przed @) z każdego adresu e-mail
- Zastąp wszystkie cyfry w nazwach użytkowników podkreślnikiem (_)
- Użyj
str_replace_all()ze wzorcem\\d, aby zastąpić wszystkie cyfry. Na przykład:str_replace_all(username, "\\d", "_")
- Użyj
- Zamień pierwszą literę każdej nazwy użytkownika na wielką
- Możesz użyć do tego funkcji
str_to_title(). Zamienia ona pierwszą literę każdego słowa w ciągu znaków na wielką.
- Możesz użyć do tego funkcji
- Usuń początkowe i końcowe białe znaki z przetworzonych nazw użytkowników
- Zwróć przetworzone nazwy użytkowników jako ciąg znaków rozdzielonych przecinkami
- Użyj
str_c()z argumentem collapse, aby połączyć nazwy użytkowników. Na przykład:str_c(usernames, collapse = ", ")
- Użyj
Spróbuj swoich sił
# Wczytaj dane wejściowe
con <- file("stdin", "r")
email_list <- suppressWarnings(readLines(con))
suppressPackageStartupMessages(library(stringr))
process_emails <- function(email_list) {
# Podziel listę adresów e-mail na poszczególne adresy
emails <- str_split(email_list, ",\\s*")[[1]]
# TODO: Napisz poniżej kod przetwarzający adresy e-mail
# 1. Wyodrębnij nazwy użytkowników
# 2. Zastąp cyfry znakami podkreślenia
# 3. Zamień pierwszą literę na wielką
# 4. Usuń białe znaki z początku i końca
# 5. Połącz przetworzone nazwy użytkowników przecinkami
# Miejsce na przetworzone nazwy użytkowników
processed_usernames <- ""
# Zwróć przetworzone nazwy użytkowników jako ciąg rozdzielony przecinkami
return(processed_usernames)
}
# Wywołaj funkcję i wyświetl wynik
result <- process_emails(email_list)
cat(result)Wszystkie lekcje w sekcji Manipulowanie danymi w R
1Podstawy danych
Poznawanie struktur danychIndeksowanie w DataFrameWybieranie podzbioru danychKonwersja typów danychOperator potoku w R4Zaawansowana manipulacja danymi
Manipulowanie ciągami znakówObsługa daty i czasuFunkcje niestandardowe2Przekształcanie danych
Wprowadzenie do dplyrAgregowanie danych za pomocą dplyrŁączenie danych za pomocą dplyrPoćwicz samodzielnie: Kompilator R online