Słownik metodologiczny · Programy statystyczne

Plik .sav – plik danych SPSS z etykietami i brakami

Plik .sav przechowuje nie tylko liczby, ale też etykiety wartości i kody braków. Wyjaśniamy, co w nim jest, jak go wczytać w R i na co uważać przy kodach typu 99.

W skrócie: Plik .sav to plik danych IBM SPSS Statistics: zawiera dane i słownik z nazwami zmiennych, etykietami, brakami zdefiniowanymi przez użytkownika i formatami. W R otworzysz go funkcją read_sav() z pakietu haven; sprawdź, czy wszystkie kody braków zostały zadeklarowane.

Co to jest plik .sav?

Plik .sav to plik danych programu IBM SPSS Statistics. Według dokumentacji polecenia SAVE zawiera on dane oraz słownik: nazwy zmiennych, etykiety zmiennych i wartości, oznaczenia braków danych i formaty wyświetlania (IBM Corp., b.d.-a). Tym różni się od pliku CSV, który przechowuje tylko tekst w komórkach, bez informacji, że 1 znaczy „kobieta”, a 9 – „brak odpowiedzi”.

Co jest zapisane w pliku

Atrybuty zmiennych ustawiasz w SPSS na karcie Variable View (Widok zmiennych): nazwę, typ, etykietę zmiennej i etykiety wartości, braki zdefiniowane przez użytkownika i poziom pomiaru (IBM Corp., b.d.-b). Wszystko to trafia do pliku razem z danymi. Plik .sav jest więc wygodną formą przekazania zbioru z książką kodową „w środku”, choć książki w osobnym dokumencie nie zastępuje.

Plik .sav w R

W R pliki .sav wczytasz i zapiszesz pakietem haven (Wickham i in., 2025): read_sav() i write_sav(). Etykiety wartości trafiają do zmiennych typu labelled, a funkcja as_factor() zamienia je na czynniki (zob. kodowanie zmiennych w R).

Przykład

Zapisano mały zbiór, w którym płeć ma etykiety, a kod 9 („brak odpowiedzi”) zadeklarowano jako brak. Po wczytaniu z ustawieniami domyślnymi read_sav() zamienił 9 na NA; z argumentem user_na = TRUE kod 9 został zachowany jako brak zdefiniowany. W zmiennej stresu kod 99 nie był zadeklarowany jako brak, więc średnia wyniosła 40, zamiast 25.25 po jego usunięciu.

Jak opisać w pracy

Dane zebrano w pliku programu IBM SPSS Statistics (.sav) i wczytano do R pakietem haven. Etykiety wartości zamieniono na czynniki, a kody braków odpowiedzi (9 i 99) potraktowano jako braki danych.

Na co uważać

  • Każdy kod braku danych zadeklaruj w pliku albo zamień na brak przed analizą; inaczej trafi do średniej jak zwykła liczba.
  • Udostępniając dane, dołącz też wersję w otwartym formacie tekstowym, bo .sav jest formatem binarnym konkretnego programu.
  • Przenoszenie danych z formularzy do SPSS i R opisuje wpis Dane z Google Forms i LimeSurvey.
Przykład reprodukowalny

Zapis i odczyt pliku .sav w R

Kod tworzy zbiór z etykietami i brakiem zdefiniowanym przez użytkownika, zapisuje go do pliku .sav, wczytuje dwoma sposobami i pokazuje skutek niezadeklarowanego kodu 99.

Etykiety wartości i braki w pakiecie haven

Dane wejściowe: pięć osób z płcią (kod 9 = brak odpowiedzi) i wynikiem skali stresu z kodem 99 (dane przykładowe).

Co odczytać: płeć po odczycie domyślnym i z user_na = TRUE, tabelę etykiet, etykietę zmiennej oraz średnią stresu przed poprawką i po niej.

R
library(haven)
d <- data.frame(id = 1:5,
                plec = labelled_spss(c(1, 2, 2, 1, 9), labels = c(kobieta = 1, `mężczyzna` = 2, `brak odpowiedzi` = 9),
                                     na_values = 9, label = "Płeć respondenta"),
                stres = c(24, 31, 19, 99, 27))
attr(d$stres, "label") <- "Wynik skali stresu (10–40)"
plik <- tempfile(fileext = ".sav")
write_sav(d, plik)                                    # zapis w formacie SPSS
a <- read_sav(plik)                                   # domyślnie braki użytkownika (9) stają się NA
a$plec
b <- read_sav(plik, user_na = TRUE)                   # zachowaj kod 9 jako brak zdefiniowany
b$plec
table(as_factor(a$plec), useNA = "ifany")             # etykiety wartości jako factor
attr(a$stres, "label")
summary(a$stres)                                      # 99 nie został zadeklarowany jako brak
a$stres[a$stres == 99] <- NA; mean(a$stres, na.rm = TRUE)   # średnia po poprawce
Wynik w R
<labelled<double>[5]>: Płeć respondenta
[1]  1  2  2  1 NA

Labels:
 value           label
     1         kobieta
     2       mężczyzna
     9 brak odpowiedzi
<labelled_spss<double>[5]>: Płeć respondenta
[1] 1 2 2 1 9
Missing values: 9

Labels:
 value           label
     1         kobieta
     2       mężczyzna
     9 brak odpowiedzi

        kobieta       mężczyzna brak odpowiedzi            <NA> 
              2               2               0               1 
[1] "Wynik skali stresu (10–40)"
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     19      24      27      40      31      99 
[1] 25.25

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 z pakietem haven 2.5.5.

  1. 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/
  2. haven (wersja 2.5.5): Wickham, H., Miller, E., & Smith, D. (2025). haven: Import and export 'SPSS', 'Stata' and 'SAS' files [R package]. https://doi.org/10.32614/CRAN.package.haven

Najczęstsze pytania

Jak otworzyć plik .sav bez SPSS?

Na przykład w R: funkcja read_sav() z pakietu haven wczytuje dane razem z etykietami zmiennych i wartości.

Czym różni się plik .sav od pliku CSV?

Plik .sav zawiera dane i słownik z etykietami, brakami i formatami. CSV to zwykły tekst z wartościami, więc znaczenie kodów trzeba opisać osobno.

Co robi read_sav() z brakami zdefiniowanymi w SPSS?

Domyślnie zamienia je na NA. Z argumentem user_na = TRUE zachowuje oryginalne kody i informację, że są brakami.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. IBM Corp. (b.d.-a). SAVE. IBM SPSS Statistics 26.0.0 Command Syntax Reference. https://www.ibm.com/docs/en/SSLVMB_26.0.0/statistics_reference_project_ddita/spss/base/syn_save_overview.html ● Otwarty dostęp
  2. IBM Corp. (b.d.-b). Variable View. IBM SPSS Statistics 31.0.0 documentation. https://www.ibm.com/docs/en/spss-statistics/31.0.0?topic=editor-variable-view ● Otwarty dostęp
  3. Wickham, H., Miller, E., & Smith, D. (2025). haven: Import and export 'SPSS', 'Stata' and 'SAS' files (Version 2.5.5) [R package]. https://doi.org/10.32614/CRAN.package.haven ● Otwarty dostęp

Cytowania BibTeX

@misc{ibmndsave, author={{IBM Corp.}}, title={{SAVE}}, howpublished={IBM SPSS Statistics 26.0.0 Command Syntax Reference}, year={b.d.-a}, publisher={IBM}, url={https://www.ibm.com/docs/en/SSLVMB_26.0.0/statistics_reference_project_ddita/spss/base/syn_save_overview.html}}
@misc{ibmndvariableview, author={{IBM Corp.}}, title={{Variable View}}, howpublished={IBM SPSS Statistics 31.0.0 documentation}, year={b.d.-b}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/31.0.0?topic=editor-variable-view}}
@misc{wickham2025haven, author={Wickham, Hadley and Miller, Evan and Smith, Danny}, title={{haven: Import and export 'SPSS', 'Stata' and 'SAS' files (R package version 2.5.5) [Computer software]}}, year={2025}, doi={10.32614/cran.package.haven}}
R