Не допускайте, чтобы экспортируемые строковые переменные (от R до SPSS) становились факторами, сохраняя при этом другие атрибуты / метки значений - PullRequest
1 голос
/ 19 марта 2019

В настоящее время я работаю с файлом 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) My fictional test data set SPSS Переменный вид исходного файла (до R) enter image description here

Теперь, после того как я экспортирую его обратно из R в SPSS:

Просмотр переменных SPSS после экспорта обратно в SPSS enter image description here

Вот вывод в 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...