Экспорт метки переменной для SPSS с гаванью

Я хотел бы экспортировать набор данных, над которым я работаю R для моих коллег, чтобы использовать в SPSS, Когда я экспортирую набор данных, я хотел бы включить метки переменных (то есть столбец ниже), я не спрашиваю о метках значений, которые описывают уровни переменной:

Переменная метка

Есть ли вариант в haven что позволяет мне установить эту переменную метку?

Я искал документацию и нашел только функции для установки меток значений. я заметил haven это обертка для ReadStat который, кажется, поддерживает переменные метки. в ReadStat документирование переменной метки (Citizenship of respondent) можно увидеть в чанке ниже:

{
    "type": "SPSS",
    "variables": [
        {
            "type": "NUMERIC",
            "name": "citizenship",
            "label": "Citizenship of respondent",
            "categories": [
                {
                    "code": 1,
                    "label": "Afghanistan"
                },
...

Мое понимание C++ к сожалению, не достаточно сложен, чтобы понять, как haven работает под капотом, поэтому любые предложения очень приветствуются.

Я нашел обходной путь, который включает ручную установку метки переменной с помощью атрибутов. Рассмотрим пример, приведенный ниже, используя набор обучающих данных из Службы данных Великобритании:

# install.packages("tidyverse")
library("tidyverse")

tmp    = tempfile(fileext = ".zip")
tmpdir = tempdir()

download.file(
  "http://ws.ukdataservice.ac.uk/REST/Download/Download/DSO/7912spss_e5b795672124e5b409e4a53c1a06fb9e.zip",
  destfile = tmp
)
unzip(tmp, exdir = tmpdir)

tmpdir = paste0(tmpdir, "/UKDA-7912-spss/spss/spss19/")
file   = paste0(tmpdir, list.files(tmpdir))

dat = haven::read_sav(file)

str(dat)

# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 22428 obs. of  14 variables:
#  $ CASENEW : atomic  1 2 3 5 5 6 6 7 8 9 ...
#   ..- attr(*, "label")= chr "New random ID number"
#   ..- attr(*, "format.spss")= chr "F8.2"
#   ..- attr(*, "display_width")= int 10
# ...

Поэтому я могу изменить метку переменной с помощью:

attr(dat$CASENEW, "label") = "Foo"
attr(dat$CASENEW, "label")
# "Foo"

Который, когда я пишу на новый .sav файл, действительно открывается как задумано в SPSS, У меня вопрос, есть ли родной способ сделать это в haven?

1 ответ

Решение

Хэдли ответ:

Просто установите атрибуты

- Хэдли Уикхем (@hadleywickham) 27 октября 2017 г.


Итак, вот оно: каноническое haven Ответ просто установить атрибуты.

Другие вопросы по тегам