Чтение убежища созданный файл dta в Stata - как бороться с точками в именах переменных?

Мы работаем в Stata с данными, созданными в R, которые были экспортированы с использованием haven пакет. Мы наткнулись на проблему с переменными, которые имеют точку в имени. Чтобы повторить проблему, немного минимального кода R:

library("haven")
var.1 <- c(1,2,3)
var_2 <- c(1,2,3)
test_df <- employ.data <- data.frame(var.1, var_2)
str(test_df)
write_dta(test_df, "D:/test_df.dta")

Теперь в Stata, когда я делаю:

use "D:\test_df.dta"
d

Первая проблема - я получаю пустой набор данных. Вторая проблема - мы получаем имя переменной с точкой - что в Stata должно быть недопустимым. Поэтому любая команда, использующая непосредственно имя переменной типа

drop var.1

возвращает ошибку:

factor variables and time-series operators not allowed
r(101);

Что вызывает такое поведение? Какие-либо решения этой проблемы?

1 ответ

Это будет drop var.1 в стате:

drop var?1

Здесь (как в Excel) ? используется в качестве символа подстановки для одного символа. (Регулярное выражение, эквивалентное .)

К сожалению, это также drop var_1, если он существует.

Я не уверен насчет пропущенных значений при записи файла.dta с haven, Я могу повторить этот результат в Stata 14.1 и haven 0.2.0. Однако, используя read_dta функция от haven,

temp2 <- read_dta("test_df.dta")

возвращает data.frame. В качестве альтернативы havenЯ использовал readstata13 пакет в прошлом без проблем.

library(readstata13)
save.dta13(test_df, "testdf.dta")

Хотя этот код имеет ту же проблему с именами переменных, он предоставил файл.dta, который содержал правильные значения при чтении в Stata 14.1. Существует аргумент convert.underscore для save.dta13, предназначенный для удаления недопустимых символов в именах переменных Stata. Я проверил, что в этом примере он будет работать правильно readstata13 для версии 0.8.5, но была ошибка в некоторых более ранних версиях, включая версию 0.8.2.

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