Как можно избежать проблем с кодированием при чтении Stata-данных в R?
Набор данных, который я хочу прочитать, - это .dta в Stata 12 или Stata 13 (до того, как Stata представила поддержку utf-8 в версии 14). Текстовые переменные с шведскими и немецкими буквами å, ä, ö, ß, а также другие символы плохо импортируются.
Я пытался эти ответы , read.dta
в foreign
, пакет haven
(без параметров кодирования), а теперь read_stata13
, который сообщает мне, что это ожидает, что файлы Stata будут закодированы в CP1252 . Но, увы, кодировка не работает. Должен ли я отказаться и использовать вместо этого .csv-экспорт в качестве моста, или на самом деле можно читать .dta-файлы в R?
Минимальный пример:
Этот код загружает первые несколько строк моего набора данных и иллюстрирует проблему, например, в переменной vocation
, которая содержит скандинавские языки.
setwd("~/Downloads/")
system("curl -O http://www.lilljegren.com/stackoverflow/example.stata13.dta", intern=F)
library(foreign)
?read_dta
df1 <- read_dta('example.stata13.dta', encoding="latin1")
df2 <- read_dta('example.stata13.dta', encoding="CP1252")
library(readstata13)
df3 <- read.dta13('example.stata13.dta', fromEncoding="latin1")
df4 <- read.dta13('example.stata13.dta', fromEncoding="CP1252")
df5 <- read.dta13('example.stata13.dta', fromEncoding="utf-8")
vocation <- c("Brandkorpral","Sömmerska","Jungfru","Timmerman","Skomakare","Skräddare","Föreståndare","Platsförsäljare","Sömmerska")
df4$vocation == vocation
# [1] TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE