2014-12-19 2 views
2

Я получаю сообщение об ошибке при преобразовании R-файла в формат Stata. Я могу преобразовать числа в Stata файл, но когда я включаю строки я получаю следующую ошибку:Преобразование файла R в Stata с отсутствующими строковыми значениями

library(foreign) 
write.dta(newdata, "X.dta") 

Error in write.dta(newdata, "X.dta") : 
    empty string is not valid in Stata's documented format 

У меня есть несколько строк, как местоположение, имя и т.д., которые отсутствующее значение, которые, вероятно, причина этой проблемы. Есть ли способ справиться с этим? ,

+0

Можете ли вы разместить пример ввода данных, генерирующих эту ошибку? –

+0

Чтобы быть понятным, если «пустая строка» должна интерпретироваться как '' '' '' ', то Stata разрешает это. Фактически, это соответствует отсутствию наблюдения для строковой переменной. –

ответ

10

У меня была эта ошибка уже много раз, и это легко воспроизвести:

library(foreign) 
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE) 
write.dta(test, 'example.dta') 

Одним из решений является использование фактора переменных вместо переменных символов, например,

for (colname in names(test)) { 
    if (is.character(test[[colname]])) { 
    test[[colname]] <- as.factor(test[[colname]]) 
    } 
} 

Другой изменить пустые строки на что-то еще и изменить их в Stata.

Это просто проблема с write.dta, потому что Stata отлично справляется с пустыми строками. Но так как foreign заморожен, вы не можете с этим поделать.

Update: (2015-12-04) Лучшее решение заключается в использовании write_dta в haven упаковке:

library(haven) 
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE) 
write_dta(test, 'example.dta') 

Таким образом, Stata читает строковые переменные должным образом в виде строк.

Смежные вопросы