Как лечить кодировку при чтении .dta-файлов в R из Stata-файлов до версии 14? - PullRequest
0 голосов
/ 06 ноября 2018

Как можно избежать проблем с кодированием при чтении 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

1 Ответ

0 голосов
/ 07 ноября 2018

Правильная кодировка для чтения файлов, сгенерированных Stata до версии 14 на Mac: "macroman"

df <- read.dta13('example.stata13.dta', fromEncoding="macroman")

На моем Mac оба .dta-файла в форматах stata13 и stata12 (сохраненные saveold в Stata 13) импортируются так же, как этот.

Предположительно, руководство read_stata13, правильно предполагает "CP1252" на других платформах. Для меня "macroman", однако, добился цели (также для .csv -файлов, которые Stata 13 сгенерировал с export delimited).

...