labelled_na_foreigndta: Konwersja ramki danych ze zmiennymi etykietowanymi do postaci...

View source: R/labelled_na_foreigndta.R

labelled_na_foreigndtaR Documentation

Konwersja ramki danych ze zmiennymi etykietowanymi do postaci dajacej sie zapisac do pliku DTA

Description

Funkcja konweruje ramkę danych zawierającą zmienne etykietowane (typowo wczytane funkcją read_spss, read_dta, lub zastosuj_codebook) do postaci odpowiadającej wynikowi działania funkcji read.dta. Tak przetworzoną ramkę danych można potem w miarę bezproblemowo zapisać do formatu DTA korzystając z funkcji write.dta.

Usage

labelled_na_foreigndta(
  x,
  zachowajWartosciPustymiPoziomami = FALSE,
  naBrakiDanych = list(. = c("brak odpowiedzi", "odmowa odpowiedzi", "nie dotyczy",
    "ndt.")),
  pusteCiagiZnakow = ".",
  utf8 = TRUE
)

Arguments

x

ramka danych ze zmiennymi etykietowanymi

zachowajWartosciPustymiPoziomami

wartość logiczna: jeśli FALSE, zmienne etykietowane po prostu zostaną skonwertowane na czynnniki, co może prowadzić do zmian wartości związanych z poszczególnymi etykietami (p. sekcja Details); jeśli TRUE, pierwotne wartości zostaną zachowane, jednak kosztem utworzenia dodatkowych pustych poziomów czynników dla wartości, które nie miały przypisanych etykiet

naBrakiDanych

lista wektorów tekstowych zawierających wartości etykiet, które mają zostać przekodowane na różne typy braków danych Staty (choć ze względu na ograniczenia funkcji write.dta przy zapisie mogą zostać uwzględnione tylko braki systemowe, oznaczane jako "."); nazwa elemntu listy podaje rodzaj braku danych (".", ".a", ... ".z")

pusteCiagiZnakow

ciąg znaków, na który zostaną zamienione puste ciągi znaków w zmiennych tekstowych (Stata nie jest w stanie zapisać pustego ciągu znaków jako wartości zmiennej tekstowej)

utf8

wartość logiczna - czy etykiety w wynikowym obiekcie mają być zakodowane w UTF-8? jeśli nie, wykorzystane zostanie domyślne kodowanie aktywnej sesji R (typowo kodowanie systemowe)

Details

Zapis danych do formatu DTA poprzez funkcję write.dta został sklepany dosyć siermiężnie i jako etapu pośredniego wymaga konwersji zmiennych etykietowanych na czynniki. Jeśli wartości, którym przypisano etykiety nie są ciągiem kolejnych (poczynając od 1) liczb naturalnych, wiąże się to albo z koniecznością pogodzenia się z tym, że w zapisanym (tu: przygotowanym do zapisu) zbiorze nie będą zgadzać się z tymi, jakie występowały w pierwotnym zbiorze, albo brzydko obchodzić ten problem dodając puste etykiety wartości jako wypełniacz. O tym, które rozwiązanie funkcja (stara się) zastosować decyduje wartość argumentu zachowajWartosciPustymiPoziomami.

Nawet jeśli argument zachowajWartosciPustymiPoziomami=TRUE, dodatkowe puste poziomy zostaną utworzone tylko dla zmiennych, których wszystkie wartości to dodatnie liczby całkowite.

Warto odnotować, że jeśli argument zachowajWartosciPustymiPoziomami=TRUE, funkcja będzie czynić zło, tzn. tworzyć czynniki ze zduplikowanymi wartościami poziomów (co w zasadzie jest niedozwolone).

Po zapisaniu zbioru funkcją write.dta (należy pamiętać o podaniu argumentu convert.factors = "labels"), warto jeszcze otworzyć go w Stacie i wydać polecenie compresss, bo funkcja write.dta bardzo hojnie obdziela zmienne w zbiorze przestrzenią (nie próbuje sprawdzać, czy nie starczyłby krótszy format).

Value

data.frame ze zmiennymi etykietowanymi przekształconymi na czynniki i przypisanymi atrybutami analogicznymi do tych, jakie mają przypisane ramki danych zwracane przez read.dta

Examples

## Not run: 
dane = zastosuj_codebook("plik z danymi.csv", "codebook.csv")
daneDoDta = labelled_na_foreigndta(dane)
write.dta(daneDoDta, "nazwa pliku.dta", version = 10, convert.factors = "labels")

## End(Not run)

tzoltak/daneIBE documentation built on Sept. 5, 2022, 7:32 a.m.