Co to jest plik CSV?
Plik CSV (ang. comma-separated values, wartości rozdzielone przecinkami) to zwykły plik tekstowy z tabelą danych: każdy rekord zajmuje jeden wiersz, a pola w wierszu rozdziela przecinek. Format opisuje dokument RFC 4180 (Shafranovich, 2005), który zaznacza, że wcześniej nie było formalnej specyfikacji, więc programy różnie go interpretują. CSV otworzy prawie każdy program, ale plik zawiera tylko tekst. Nie przechowuje etykiet wartości ani typów zmiennych, tak jak plik .sav, dlatego opis zmiennych trzymaj osobno w książce kodowej.
Zasady zapisu
- Pierwszy wiersz może być nagłówkiem z nazwami pól, a każdy wiersz powinien mieć tyle samo pól.
- Pole zawierające przecinek, cudzysłów albo znak nowego wiersza ujmuje się w cudzysłów.
- Cudzysłów wewnątrz pola zapisuje się podwójnie:
"zmęczony, ""senny""". - Wiersze kończy para znaków CRLF, choć część programów używa innych końców wiersza (Shafranovich, 2005). W R taki koniec wiersza daje argument
eol = "\r\n".
W krajach z przecinkiem dziesiętnym, także w Polsce, pliki CSV często rozdzielają pola średnikiem. W R obsługują je funkcje write.csv2() i read.csv2() (R Core Team, 2026).
Przykład
Tę samą tabelę trzech osób zapisano dwiema funkcjami R (dane przykładowe). Po write.csv() drugi rekord ma postać 2,"eksperymentalna",2.8,"zmęczony, ""senny""", a po write.csv2(): 2;"eksperymentalna";2,8;…. Plik ze średnikami wczytany funkcją read.csv() dał jedną kolumnę zamiast czterech. Plik z przecinkami po ponownym wczytaniu był identyczny z danymi wyjściowymi. Średni stres dwóch osób z wynikiem wyniósł 3.025, a brak danych u trzeciej osoby zapisano jako NA.
Jak opisać w pracy
Na co uważać
- Separator i kodowanie ustal z odbiorcą. Podręcznik R zauważa, że w praktyce ważniejsze od zgodności ze standardem jest to, czy plik odczyta docelowy program. Polskie znaki zapisuj w UTF-8.
- Jeden kod braku. Nie mieszaj w jednej kolumnie
NA, pustych pól i „99”. - Plik tekstowy nie zna typów. Po wczytaniu sprawdź, czy liczby nie stały się tekstem.
CSV dobrze sprawdza się w pakiecie replikacyjnym. Eksport z formularzy online opisuje wpis Dane z Google Forms i LimeSurvey.
Zapis i odczyt CSV w R
Kod zapisuje tę samą tabelę w dwóch wariantach CSV, pokazuje zawartość plików i sprawdza, czy odczyt odtwarza dane.
write.csv() a write.csv2()
R
dane <- data.frame(id = 1:3, grupa = c("kontrolna", "eksperymentalna", "kontrolna"),
stres = c(3.25, 2.8, NA), uwagi = c("brak", "zmęczony, \"senny\"", ""))
f1 <- tempfile(fileext = ".csv")
write.csv(dane, f1, row.names = FALSE) # przecinek i kropka dziesiętna
cat(readLines(f1), sep = "\n")
f2 <- tempfile(fileext = ".csv")
write.csv2(dane, f2, row.names = FALSE) # średnik i przecinek dziesiętny
cat(readLines(f2), sep = "\n")
ncol(read.csv(f2)) # zła funkcja: jedna kolumna
wczytane <- read.csv(f1)
all.equal(wczytane, dane) # czy zapis i odczyt zachowały dane
mean(wczytane$stres, na.rm = TRUE)Wynik w R
"id","grupa","stres","uwagi"
1,"kontrolna",3.25,"brak"
2,"eksperymentalna",2.8,"zmęczony, ""senny"""
3,"kontrolna",NA,""
"id";"grupa";"stres";"uwagi"
1;"kontrolna";3,25;"brak"
2;"eksperymentalna";2,8;"zmęczony, ""senny"""
3;"kontrolna";NA;""
[1] 1
[1] TRUE
[1] 3.025Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i utils).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
Najczęstsze pytania
Dlaczego plik CSV wczytuje się jako jedna kolumna?
Program spodziewa się innego separatora. Plik ze średnikami wczytaj w R funkcją read.csv2() albo podaj sep = ";", a plik z przecinkami funkcją read.csv().
Czy plik CSV zachowuje etykiety wartości z SPSS?
Nie. CSV zawiera tylko tekst w komórkach, bez etykiet i typów zmiennych. Wyeksportuj kody liczbowe albo etykiety i opisz je w książce kodowej.
Czym różni się write.csv od write.csv2 w R?
write.csv() rozdziela pola przecinkiem i stosuje kropkę dziesiętną. write.csv2() używa średnika i przecinka dziesiętnego. Do odczytu służą odpowiednio read.csv() i read.csv2().
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
R dla początkujących
Od instalacji R i RStudio do pierwszego testu t: wczytanie CSV i .sav, ramka danych, wynik skali, statystyki opisowe, d Cohena. Dane i skrypt do pobrania.
Czytaj →PoradnikDane z Google Forms i LimeSurvey: kodowanie do SPSS i R
Eksport, nazwy zmiennych, rekodowanie Likerta, pozycje odwrócone, wielokrotny wybór i braki – krok po kroku, z kodem R i wzorem książki kodowej.
Czytaj →PoradnikPakiet replikacyjny: dane i kod do artykułu
Struktura folderów, README, książka kodowa, skrypty R działające od zera, anonimizacja i RODO, licencje, OSF i deklaracja dostępności danych + szablon ZIP.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- R Core Team. (2026). R data import/export (Version 4.6.1). R Foundation for Statistical Computing. https://cran.r-project.org/doc/manuals/r-release/R-data.html ● Otwarty dostęp
- Shafranovich, Y. (2005). Common format and MIME type for comma-separated values (CSV) files (RFC 4180). RFC Editor. https://doi.org/10.17487/rfc4180 ● Otwarty dostęp
Cytowania BibTeX
@techreport{rcoreteam2026rdata, author={{R Core Team}}, title={{R data import/export}}, year={2026}, institution={R Foundation for Statistical Computing}, url={https://cran.r-project.org/doc/manuals/r-release/R-data.html}}@techreport{shafranovich2005common, author={Shafranovich, Yakov}, title={{Common format and MIME type for comma-separated values (CSV) files}}, year={2005}, institution={RFC Editor}, doi={10.17487/rfc4180}}