Чтение убежища созданный файл 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.