#r #label #stata #expss
Вопрос:
Я добавил метки переменных (и значений для некоторых) в R, используя функцию apply_labels из ‘expss’. Когда я хочу сохранить данные с помощью «write.dta» и открыть их в Stata (или повторно открыть недавно сохраненные данные в R), метки не отображаются.
Я подозреваю, что это как-то связано с этой строкой в документации write.dta:
Если атрибут «var.labels» содержит вектор символов со строковой меткой для каждой переменной, то это записывается как метки переменных. В противном случае имена переменных повторяются в виде меток переменных.
Потому что это именно то, что происходит (имена переменных повторяются как метки переменных). При проверке attr(df$variable, "label")
перед попыткой записи данных с помощью write.dta появляются метки.
Я получаю предупреждающее сообщение:
«В write.dta […] сокращенные имена переменных».
Не уверен, имеет ли это отношение к проблеме.
Воспроизводимый пример кода, используемого для добавления переменной, меток и записи данных:
library(expss) library(dplyr) library(foreign) df lt;- data.frame(country = rep(c("NL", "DE", "FR", "AT"), 2), year = rep(c(2012,2014), 4), LS_medianpovgap60_disp_wa = c(0.448257605781815, 0.468249874784546, 0.473270740126805, 0.483814288478694, 0.486781335455043, 0.49246341926957, 0.51121872756711, 0.556027028656306)) df lt;- apply_labels(df, country = "Country", year = "Year", LS_medianpovgap60_disp_wa = "Median shortfall from the poverty thresholds using 60% of the median income, disposable income only households with working age (LIS and SILC average)") write.dta(df, "df_labelled.dta")
Комментарии:
1. Не могли бы вы предоставить нам воспроизводимый пример кода, используемого для добавления переменной, меток и записи данных?
Ответ №1:
Для версии Stata gt; 7 gt; write.dta
пытается сократить метку переменной, если атрибуты метки длиннее 31 символа.
Вы можете получить лучший результат, используя haven
пакет для написания и чтения вашего кода.
haven::write_dta(df, "df_labelled.dta") temp lt;- haven::read_dta("df_labelled.dta") temp
Редактировать В комментариях ниже указывается, что Stata накладывает ограничение на длину переменной метки (80 символов). Таким образом, все обходные пути на основе R будут подчиняться этому ограничению.
Комментарии:
1. Спасибо. Использование haven для записи данных работает (лучше). При записи данных с использованием иностранных сокращений имя переменной автоматически сокращается, но метки не сохраняются. Запись данных с помощью haven приводит к ошибке при слишком длинных именах переменных, но после исправления их вручную данные сохраняются, при этом имена меток сокращаются на 80 символов.
2. К вашему сведению, 80 символов-это ограничение, налагаемое Stata. См
help label
.: «переменная метки прикрепляет метку (до 80 символов) к переменной. Если метка не указана, любая существующая метка переменной удаляется».