Funkcje tekstowe w R

Poznaj najważniejsze funkcje tekstowe w języku R – od substr i str_split po str_detect. Praktyczne przykłady i porównanie funkcji bazowych i stringr.
17 marca 2026
blog

Wprowadzenie do funkcji tekstowych w języku R

Analiza danych tekstowych stanowi integralną część pracy z danymi w języku R. Choć R słynie głównie z możliwości analizy statystycznej i pracy z danymi liczbowymi, oferuje również bogaty zestaw narzędzi do przetwarzania tekstów, zarówno w postaci wbudowanych funkcji bazowych, jak i dedykowanych pakietów, takich jak stringr.

Funkcje tekstowe w R pozwalają między innymi na:

  • przycinanie i ekstrakcję fragmentów tekstu,
  • dzielenie ciągów znaków według określonych separatorów,
  • łączenie wielu fragmentów tekstu w jedną całość,
  • rozpoznawanie i dopasowywanie określonych wzorców tekstowych,
  • czyszczenie i standaryzację danych tekstowych.

W zależności od potrzeb i stopnia skomplikowania operacji, użytkownik R może korzystać z prostych funkcji bazowych dostępnych w podstawowej instalacji języka lub sięgnąć po bardziej specjalistyczne rozwiązania oferowane przez dodatkowe pakiety. Na przykład, funkcje pakietu stringr bazują na spójnej składni i zwracają przewidywalne wyniki, co czyni je wygodnymi w codziennej pracy analityka.

Znajomość funkcji tekstowych jest kluczem do efektywnego przygotowania danych do dalszej analizy, zwłaszcza w sytuacjach, gdy dane pochodzą z nieustrukturyzowanych źródeł, takich jak formularze, pliki CSV czy dane z sieci.

Przycinanie tekstu za pomocą funkcji substr()

Funkcja substr() w języku R służy do ekstrakcji wybranego fragmentu tekstu na podstawie zadanych pozycji początkowej i końcowej. Jest to jedno z podstawowych narzędzi do manipulacji łańcuchami znaków, szczególnie użyteczne wtedy, gdy interesuje nas konkretna część tekstu — na przykład kod kraju w numerze identyfikacyjnym, skrót daty lub inicjały imienia i nazwiska.

Ten artykuł powstał jako rozwinięcie jednego z najczęstszych tematów poruszanych podczas szkoleń Cognity.

substr() pozwala nie tylko na wyodrębnienie fragmentu tekstu, ale może być również używana do jego modyfikacji, poprzez nadpisanie określonego zakresu znaków. W odróżnieniu od bardziej zaawansowanych funkcji dostępnych w dodatkowych pakietach, takich jak stringr, substr() pochodzi z bazowego R i nie wymaga instalacji zewnętrznych bibliotek.

Typowe zastosowania tej funkcji obejmują:

  • wydobywanie stałych długości fragmentów z identyfikatorów lub kodów,
  • skracanie tekstów do określonej liczby znaków,
  • tworzenie nowych zmiennych tekstowych na bazie części istniejących,
  • modyfikację zawartości tekstu w wybranym zakresie znaków.

Ze względu na swoją prostotę i bezpośredniość działania, substr() jest szczególnie przydatna na wczesnych etapach przetwarzania danych tekstowych, gdzie nie są jeszcze wymagane bardziej złożone operacje.

Dzielenie tekstu z użyciem str_split()

W pracy z danymi tekstowymi często pojawia się potrzeba podziału pojedynczego ciągu znaków na mniejsze fragmenty według określonego wzorca – na przykład oddzielenie imienia od nazwiska, rozdzielenie danych adresowych czy rozbicie zdań na pojedyncze słowa. W języku R do takich operacji możemy wykorzystać funkcję str_split() z pakietu stringr.

str_split() umożliwia rozdzielanie tekstu na podstawie wyrażenia regularnego lub określonego znaku (np. przecinka czy spacji). W przeciwieństwie do prostszych funkcji bazowych, takich jak strsplit(), funkcja ta lepiej integruje się z tidyverse i wspiera spójne podejście do przetwarzania danych tekstowych.

Oto przykład użycia:

library(stringr)

tekst <- "Warszawa,Kraków,Gdańsk"
str_split(tekst, ",")

Wynikiem będzie lista z jednym elementem, zawierającym wektor z trzema miastami. Jeśli przekażemy więcej niż jeden ciąg znaków, str_split() zwróci listę o odpowiadającej długości.

Poniższa tabela przedstawia krótkie porównanie funkcji str_split() i strsplit():

Funkcja Pochodzenie Zwracany typ Wsparcie dla tidyverse
str_split() Pakiet stringr Lista wektorów znakowych Tak
strsplit() Funkcja bazowa R Lista Nie

Warto zwrócić uwagę, że str_split() umożliwia także ograniczenie liczby podziałów poprzez parametr n, co może być przydatne w bardziej zaawansowanych scenariuszach analizy tekstu. Jeśli chcesz pogłębić wiedzę na temat pracy z danymi tekstowymi w R, warto zapoznać się z Kursem Studio R - operacje i przetwarzanie danych, import i eksport danych z programu.

Łączenie łańcuchów znaków funkcją paste()

W R jedną z podstawowych potrzeb przy pracy z tekstem jest łączenie kilku elementów tekstowych w jeden łańcuch znaków. Do tego celu służy funkcja paste() oraz jej odmiana paste0(). Obie należą do funkcji bazowych R i są szeroko wykorzystywane w przetwarzaniu danych tekstowych.

paste() umożliwia łączenie wielu argumentów tekstowych w jeden ciąg, z możliwością określenia separatora, który ma rozdzielać poszczególne elementy. paste0() to skrócona wersja, która domyślnie nie dodaje żadnego separatora.

Funkcja Opis Domyślny separator Przykład
paste() Łączy tekst z domyślnym separatorem (spacja) lub zdefiniowanym separatorem spacja (" ") paste("R", "Studio")"R Studio"
paste0() Łączy tekst bez żadnego separatora brak paste0("R", "Studio")"RStudio"

Obie funkcje są wektorowe, co oznacza, że można je stosować do całych wektorów znakowych, łącząc elementy w sposób kontrolowany. Dzięki temu świetnie sprawdzają się w tworzeniu nazw zmiennych, etykiet wykresów czy generowaniu komunikatów tekstowych.

Poniższy przykład pokazuje podstawowe użycie funkcji paste() i paste0():

# Przykład z paste()
paste("Wartość", 1:3)
# Wynik: "Wartość 1" "Wartość 2" "Wartość 3"

# Przykład z paste0()
paste0("id_", 1:3)
# Wynik: "id_1" "id_2" "id_3"

W wielu przypadkach wybór między paste() a paste0() zależy od potrzeby dodania separatora między elementami. Gdy potrzebna jest większa kontrola nad formatowaniem, warto wykorzystać argument sep w funkcji paste(). W czasie szkoleń Cognity ten temat bardzo często budzi ożywione dyskusje między uczestnikami.

Wykrywanie wzorców tekstowych z stringr::str_detect()

Jednym z podstawowych zadań w pracy z tekstem w języku R jest identyfikacja, czy dany ciąg znaków zawiera określony wzorzec. Funkcja str_detect() z pakietu stringr została zaprojektowana właśnie do tego celu. Wykorzystuje ona składnię wyrażeń regularnych i pozwala w prosty sposób sprawdzić, czy dana fraza, litera, liczba lub inny element tekstowy występuje w analizowanym ciągu.

str_detect() przyjmuje dwa podstawowe argumenty: wektor tekstowy oraz wzorzec do wykrycia. Zwraca wektor logiczny typu TRUE/FALSE, informujący o tym, czy wzorzec został wykryty w danym elemencie.

library(stringr)

txt <- c("Warszawa", "Kraków", "Gdańsk")
str_detect(txt, "a")
# Wynik: TRUE  TRUE  TRUE

Poniżej zestawiono podstawowe różnice między str_detect() a innymi sposobami wykrywania wzorców w R:

Metoda Pakiet Zwracany typ Obsługa NA Wygoda składni
grepl() base R logical TRUE/NA średnia
str_detect() stringr logical LEPSZA obsługa NA wysoka (przyjazna składnia)

Dzięki czytelnej składni oraz integracji z tidyverse, str_detect() jest powszechnie stosowana w analizie danych tekstowych, szczególnie w połączeniu z funkcjami pakietu dplyr. Pozwala m.in. na filtrowanie rekordów zawierających określony wyraz, sprawdzanie poprawności danych tekstowych czy wyszukiwanie istotnych informacji w dużych zbiorach danych. Jeśli chcesz pogłębić znajomość pracy z tekstem i innymi elementami tidyverse, sprawdź Kurs Tidyverse w R – efektywna analiza, czyszczenie i prezentacja danych.

Praktyczne zastosowania funkcji tekstowych w analizie danych

Funkcje tekstowe odgrywają kluczową rolę w analizie danych tekstowych w języku R. Umożliwiają one manipulację łańcuchami znaków w celu ich przygotowania, oczyszczenia i analizy. Poniżej przedstawiono wybrane obszary zastosowań, w których funkcje tekstowe okazują się szczególnie przydatne:

  • Przygotowanie danych do analizy – W praktyce, dane tekstowe często zawierają niepotrzebne spacje, znaki specjalne lub są niejednolicie sformatowane. Funkcje takie jak trimws(), tolower(), gsub() pozwalają na oczyszczenie danych przed dalszym przetwarzaniem.
  • Ekstrakcja informacji – Za pomocą wyrażeń regularnych oraz funkcji takich jak str_extract() czy regmatches(), możliwe jest wyodrębnianie konkretnych fragmentów tekstu, np. numerów telefonów, dat czy adresów e-mail.
  • Kategoryzacja danych tekstowych – Funkcje wykrywające wzorce, takie jak grepl() czy str_detect(), pozwalają przypisać rekordy do kategorii na podstawie zawartości tekstu, np. oznaczyć komentarze jako pozytywne lub negatywne.
  • Tworzenie nowych zmiennych – Analiza danych nierzadko wymaga stworzenia nowych kolumn na bazie przekształconego tekstu, np. skrótu nazwy, inicjałów, czy identyfikatora wygenerowanego z innego atrybutu.
  • Łączenie danych – W sytuacjach, gdy dane są rozproszone w różnych kolumnach, funkcje takie jak paste() lub str_c() służą do ich scalania w spójną całość, np. złożenie pełnego adresu z ulicy, numeru i miasta.

W poniższej tabeli zestawiono przykładowe zadania analityczne wraz z odpowiednimi funkcjami tekstowymi:

Zadanie Funkcja Przykład
Usunięcie spacji z początku i końca tekstu trimws() trimws(" tekst ") → "tekst"
Łączenie imienia i nazwiska paste() lub str_c() paste("Jan", "Kowalski") → "Jan Kowalski"
Wyszukanie wzorca w tekście grepl() lub str_detect() grepl("@", "email@test.com") → TRUE
Ekstrakcja numeru z tekstu regexpr() lub str_extract() str_extract("ID: 12345", "\\d+") → "12345"

Znajomość tych zastosowań pozwala nie tylko efektywniej przetwarzać dane tekstowe, ale też znacznie zwiększa elastyczność w przygotowywaniu danych do dalszych analiz statystycznych czy modelowania.

Porównanie funkcji bazowych R i pakietu stringr

W języku R dostępne są dwa główne podejścia do pracy z tekstem: funkcje bazowe, wbudowane w podstawową dystrybucję R, oraz funkcje oferowane przez pakiet stringr, będący częścią ekosystemu tidyverse. Oba te podejścia umożliwiają manipulację łańcuchami znaków, jednak różnią się pod względem składni, spójności oraz wygody użycia.

Funkcje bazowe R, takie jak substr(), paste() czy grep(), są dostępne bez konieczności instalowania dodatkowych pakietów. Umożliwiają szeroki zakres operacji tekstowych i są dobrze znane wśród użytkowników R. Ich składnia bywa jednak niejednorodna, a niektóre funkcje mogą działać w sposób mniej intuicyjny dla początkujących.

Z kolei pakiet stringr oferuje zestaw funkcji zaprojektowanych z myślą o spójności i czytelności. Wszystkie funkcje z tego pakietu mają podobną strukturę nazw i przyjmują wektory znakowe jako pierwszy argument, co ułatwia ich łączenie z innymi narzędziami tidyverse. Ponadto, stringr korzysta z silnika dopasowywania wzorców opartego na wyrażeniach regularnych, co czyni go bardzo elastycznym narzędziem do zaawansowanej analizy tekstu.

Wybór między funkcjami bazowymi a pakietem stringr zależy często od preferencji użytkownika, stopnia zaawansowania projektu oraz potrzeby integracji z innymi elementami analizy danych. W praktyce oba podejścia mogą być stosowane równolegle, przy czym stringr bywa wybierany ze względu na większą spójność i lepszą integrację z nowoczesnymi narzędziami R.

Podsumowanie i najlepsze praktyki pracy z tekstem w R

Praca z danymi tekstowymi w R jest istotną częścią analizy danych, szczególnie w obszarach takich jak przetwarzanie języka naturalnego, analiza odpowiedzi ankietowych czy czyszczenie surowych zbiorów danych. R oferuje szeroki zestaw funkcji do manipulowania tekstem zarówno w postaci funkcji bazowych, jak i rozbudowanych narzędzi z pakietów zewnętrznych, takich jak stringr.

Podczas pracy z tekstem warto mieć na uwadze kilka kluczowych zasad:

  • Wybieraj odpowiednie narzędzia – funkcje wbudowane, takie jak substr() czy paste(), są szybkie i uniwersalne, natomiast funkcje z pakietu stringr oferują spójność składni i lepszą integrację z tidyverse.
  • Zwracaj uwagę na kodowanie znaków – w pracy z tekstem mogą pojawić się problemy wynikające z różnych formatów kodowania (np. UTF-8), szczególnie przy imporcie danych z zewnętrznych źródeł.
  • Unikaj nadmiernego zagnieżdżania funkcji – złożone operacje tekstowe warto dzielić na mniejsze kroki, co zwiększa czytelność i ułatwia debugowanie.
  • Pamiętaj o wydajności – w przypadku dużych zbiorów danych tekstowych, wydajność niektórych operacji może być krytyczna. Czasem warto profilować kod i porównywać różne podejścia.
  • Dokumentuj transformacje tekstu – zmiany w danych tekstowych mogą być trudne do odtworzenia bez odpowiednich komentarzy lub historii przekształceń.

Znajomość i umiejętne stosowanie funkcji tekstowych w R pozwala nie tylko skutecznie radzić sobie z danymi niestrukturalnymi, ale również znacząco zwiększa elastyczność i precyzję analiz. Podczas szkoleń Cognity pogłębiamy te zagadnienia w oparciu o konkretne przykłady z pracy uczestników.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments