В настоящее время я работаю с файлом SPSS и импортировал их в R для некоторой очистки и предварительного анализа.
Затем я должен преобразовать их обратно в файл .sav (файл SPSS) для остальной части моей команды.
Я использовал библиотеку (sjlabelled), чтобы сохранить все метки значений и метки переменных, а также заверил, что при всех манипуляциях метки сохраняются (например, с использованием функций, таких как dplyr left_join () вместо cbind () и т. Д.)
Теперь мой последний набор готов в R, и в соответствии с R все атрибуты все еще верны.
Функция write_spss () sjlabelled создает набор данных SPSS с правильными метками для всех числовых переменных.
Однако в этом процессе он преобразует все строковые переменные (в моем случае текстовый ответ) в числовую (факторную) переменную. Исходный текст сохраняется, но теперь прикрепляется в виде метки, описывающей (готовый) числовой коэффициент.
Есть ли способ предотвратить это?
Я также пробовал это через пакеты foreign (), но это полностью пропустило все ярлыки.
write.foreign(SPSS_new, "SPSS_test_new.txt", "SPSS_test_new.sps", package="SPSS")
Я прилагаю снимки экрана с данными и переменным представлением в SPSS для моего набора вымышленных тестовых данных до импорта в R и после экспорта обратно в SPSS. На третьем изображении я отметил проблемы, которые возникают.
SPSS Просмотр данных исходного файла (до R)
SPSS Переменный вид исходного файла (до R)
![enter image description here](https://i.stack.imgur.com/e4mJf.png)
Теперь, после того как я экспортирую его обратно из R в SPSS:
Просмотр переменных SPSS после экспорта обратно в SPSS
![enter image description here](https://i.stack.imgur.com/3kZbS.png)
Вот вывод в R для структуры data.frame, которую я экспортирую обратно в SPSS:
str(SPSS_new)
'data.frame': 10 obs. of 6 variables:
$ ID : num 1 2 3 4 5 6 7 8 9 10
..- attr(*, "label")= chr "Identifier"
..- attr(*, "format.spss")= chr "F8.2"
..- attr(*, "display_width")= int 0
$ FactorVariable.x: num 1 2 3 2 1 2 3 2 1 1
..- attr(*, "label")= chr "This is a nominal variable"
..- attr(*, "format.spss")= chr "F8.2"
..- attr(*, "display_width")= int 0
..- attr(*, "labels")= Named num 1 2 3
.. ..- attr(*, "names")= chr "male" "female" "not specified"
$ StringVariable : chr "This is a text" "This is more text" "I have space for 800 characters" "Test test test" ...
..- attr(*, "label")= chr "Qualitative text"
..- attr(*, "format.spss")= chr "A255"
..- attr(*, "display_width")= int 0
$ Ordinal : num 1 2 3 3 2 1 1 2 3 2
..- attr(*, "label")= chr "Ordinal variable"
..- attr(*, "format.spss")= chr "F8.3"
..- attr(*, "display_width")= int 0
..- attr(*, "labels")= Named num 1 2 3
.. ..- attr(*, "names")= chr "low" "medium" "high"
$ Interval : num 4.3 2.4 2.4 2.22 4.6 3 3.34 3.45 4.01 2.34
..- attr(*, "label")= chr "Interval variable"
..- attr(*, "format.spss")= chr "F8.2"
..- attr(*, "display_width")= int 0
$ FactorVariable.y: num 1 2 3 2 1 2 3 2 1 1
..- attr(*, "label")= chr "This is a nominal variable"
..- attr(*, "format.spss")= chr "F8.2"
..- attr(*, "display_width")= int 0
..- attr(*, "labels")= Named num 1 2 3
.. ..- attr(*, "names")= chr "male" "female" "not specified"