0Pricing
R Academy · Lekcja

Odczytywanie plików CSV za pomocą read_csv()

Importuj pliki rozdzielane, korzystając z automatycznego rozpoznawania typów kolumn, pomijania danych i opcji kodowania.

Odczytywanie plików CSV za pomocą read_csv() to bezpłatna lekcja R Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.

Dlaczego readr zamiast Base R?

Base R zawiera funkcję read.csv(), jednak funkcja read_csv() z pakietu readr działa szybciej, zwraca tibble (a nie ramkę danych), zapewnia lepsze domyślne rozpoznawanie typów i wyświetla przydatne komunikaty o wykrytych typach kolumn.

library(readr)

# read_csv() vs read.csv():
# 1. Returns a tibble (prints nicely, faster subsetting)
# 2. Does NOT convert strings to factors by default
# 3. Shows column specification message
# 4. Faster for large files

# Example with a simple inline CSV:
df <- read_csv('name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C')

print(df)
print(class(df))

read_csv() ze ścieżką do pliku

Najczęstszy sposób użycia polega na przekazaniu do read_csv() ciągu znaków zawierającego ścieżkę do pliku. Funkcja automatycznie rozpoznaje przecinek jako separator, odczytuje pierwszy wiersz jako nagłówki i określa typy kolumn na podstawie pierwszych 1000 wierszy.

library(readr)

# Reading from a file path (illustrative — file not present)
# df <- read_csv('data/sales_2024.csv')

# Reading from a URL also works:
# df <- read_csv('https://example.com/data.csv')

# Using a literal inline string for demonstration:
df <- read_csv('region,q1,q2,q3
East,100,120,115
West,200,195,210
North,80,85,90')

print(df)

col_types — określanie typów kolumn

Użyj col_types, aby zastąpić automatyczne określanie typów przez readr. Przekaż zwarty ciąg znaków (jeden znak na kolumnę: c=character, d=double, i=integer, l=logical, D=date, _=skip) albo specyfikację cols().

library(readr)

df <- read_csv('id,date,amount,active
1,2024-01-15,99.99,TRUE
2,2024-02-20,149.50,FALSE
3,2024-03-10,75.00,TRUE',
# Compact: integer, Date, double, logical
col_types = 'iDdl')

print(df)
cat('\nColumn types:\n')
print(sapply(df, class))

cols() do jawnego określania typów

Aby uzyskać większą kontrolę, użyj cols() i określ typ każdej kolumny. Użyj funkcji collector: col_double(), col_character(), col_integer(), col_date(format=), col_skip() oraz col_guess().

library(readr)

df <- read_csv('id,name,score,date
1,Alice,85.5,2024-01-15
2,Bob,92.0,2024-02-20
3,Carol,78.3,2024-03-10',
col_types = cols(
  id = col_integer(),
  name = col_character(),
  score = col_double(),
  date = col_date(format = '%Y-%m-%d')
))

print(df)
print(class(df$date))

Argumenty skip i n_max

skip=n pomija pierwszych n wierszy przed rozpoczęciem odczytu (co jest przydatne w przypadku metadanych lub nagłówków komentarzy). n_max=n odczytuje najwyżej n wierszy danych — idealne rozwiązanie do podglądania dużych plików lub wczytywania tylko pierwszego fragmentu.

library(readr)

# File with metadata in first 2 lines
# (simulated with literal string)
df <- read_csv('# Generated 2024-01-15
# Source: internal DB
name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C
Dave,88,B',
skip = 2,     # Skip the 2 comment lines
n_max = 3     # Read only 3 data rows
)

print(df)

Argument na — definiowanie brakujących wartości

Domyślnie read_csv() traktuje puste ciągi znaków i NA jako wartości brakujące. Użyj argumentu na, aby określić dodatkowe ciągi znaków, które powinny być odczytywane jako NA — typowe przykłady to: 'N/A', 'NULL', '-999', '.'.

library(readr)

df <- read_csv('name,score,city
Alice,85,NYC
Bob,N/A,NULL
Carol,78,.
Dave,-999,Chicago',
na = c('', 'NA', 'N/A', 'NULL', '.', '-999')
)

print(df)
cat('NAs per column:\n')
print(colSums(is.na(df)))

col_names — niestandardowe nazwy kolumn

Ustaw col_names = FALSE, gdy plik nie zawiera wiersza nagłówkowego — readr automatycznie nada kolumnom nazwy X1, X2 itd. Możesz również przekazać do col_names wektor znaków, aby określić niestandardowe nazwy i pominąć wiersz nagłówkowy.

library(readr)

# File without headers
df <- read_csv('Alice,85,NYC
Bob,92,LA
Carol,78,Chicago',
col_names = c('name','score','city')
)

print(df)

# auto-names when no header:
df2 <- read_csv('1,2,3
4,5,6', col_names = FALSE)
print(df2)

locale() — obsługa niestandardowych formatów

locale() określa, jak readr interpretuje formaty zależne od ustawień regionalnych: znaki dziesiętne (',' w danych europejskich), formaty dat, kodowanie i separatory grupowania. Przekaż go do read_csv(locale=...).

library(readr)

# European-style CSV: semicolons as delimiters, comma as decimal
# read_csv2() is shorthand for this locale
df <- read_csv2('name;price;qty
Alice;9,99;100
Bob;24,50;50',
locale = locale(decimal_mark=',')
)

print(df)

# For dates in non-ISO format:
parse_date('15/01/2024', format='%d/%m/%Y')

progress i show_col_types

W przypadku dużych plików read_csv() wyświetla pasek postępu. Ustaw progress=FALSE, aby go ukryć (co jest przydatne w skryptach). show_col_types=FALSE wycisza komunikat o typach kolumn, gdy zostały już przez Pana/Panią sprawdzone.

library(readr)

# Suppress progress and type messages for production scripts
df <- read_csv(
  'a,b,c
  1,x,TRUE
  2,y,FALSE',
  show_col_types = FALSE,
  progress = FALSE
)

print(df)

Problems() — diagnozowanie błędów parsowania

Gdy readr napotka wartości, które nie pasują do oczekiwanego typu, zastępuje je przez NA i zapisuje ostrzeżenie. Wywołaj problems(df), aby sprawdzić dokładnie, w których wierszach i kolumnach wystąpiły problemy oraz jakie były oryginalne wartości.

library(readr)

# Intentional type mismatch: 'N/A' in numeric column
df <- suppressWarnings(read_csv(
  'id,score
  1,85
  2,N/A
  3,92',
  col_types = cols(score = col_double())
))

print(df)
print(problems(df))

Odczytywanie wielu plików za pomocą map()

Połącz readr z purrr::map(), aby w jednym kroku odczytać wiele plików CSV i połączyć ich wiersze. Ten wzorzec jest niezbędny podczas przetwarzania danych miesięcznych lub kwartalnych podzielonych na osobne pliki.

library(readr)
library(purrr)
library(dplyr)

# Simulated: read and bind multiple CSV files
files <- c('q1.csv', 'q2.csv', 'q3.csv')

# In practice:
# all_data <- map_df(files, read_csv, show_col_types=FALSE)

# Demonstration with inline data:
q1 <- read_csv('month,sales\nJan,100\nFeb,120', show_col_types=FALSE)
q2 <- read_csv('month,sales\nApr,130\nMay,145', show_col_types=FALSE)

bind_rows(list(q1=q1, q2=q2), .id='quarter')

Szybkie sprawdzenie

Jak poinformować read_csv(), że wartości 'N/A' i '-99' należy traktować jako brakujące (NA)?

Podsumowanie: read_csv() z pakietem readr

Najważniejsze informacje o odczytywaniu plików CSV za pomocą readr:

  • read_csv('file.csv') — odczytuje plik CSV, zwraca tibble i określa typy kolumn
  • col_types = 'idcl' lub cols(x=col_double()) — jawne określenie typów
  • skip=n — pomija wiersze nagłówka lub metadanych; n_max=n — ogranicza liczbę odczytywanych wierszy
  • na = c('N/A','NULL') — traktuje dodatkowe ciągi znaków jako NA
  • locale(decimal_mark=',') — obsługuje europejskie formaty liczb
  • show_col_types=FALSE — ukrywa informacje o typach w skryptach
  • problems(df) — umożliwia sprawdzenie błędów parsowania
  • Połącz z map_df(files, read_csv), aby odczytać wiele plików
library(readr)

# Production-ready read_csv() call
df <- read_csv(
  'name,score,city,active
  Alice,85,NYC,TRUE
  Bob,N/A,LA,FALSE
  Carol,78,NULL,TRUE',
  col_types = cols(
    name = col_character(),
    score = col_double(),
    city = col_character(),
    active = col_logical()
  ),
  na = c('', 'NA', 'N/A', 'NULL'),
  show_col_types = FALSE
)

print(df)

Często zadawane pytania

Czy lekcja „Odczytywanie plików CSV za pomocą read_csv()” jest bezpłatna?

Tak — pełny tekst „Odczytywanie plików CSV za pomocą read_csv()” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie plików CSV za pomocą read_csv()”?

Importuj pliki rozdzielane, korzystając z automatycznego rozpoznawania typów kolumn, pomijania danych i opcji kodowania. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć R Academy?

Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Odczytywanie plików CSV za pomocą read_csv()”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?

Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Odczytywanie plików CSV za pomocą read_csv()
  2. Parsowanie plików TSV i plików o stałej szerokości
  3. Importowanie plików Excela za pomocą readxl
  4. Zapisywanie danych w wielu formatach
← Powrót do R Academy