簡體   English   中英

從版本14之前的Stata文件讀取.dta文件到R中時,如何處理編碼?

[英]How to treat encoding when reading .dta-files into R from Stata-files prior to version 14?

將Stata數據讀取到R中時,如何避免編碼問題?

我希望讀取的數據集是Stata 12或Stata 13中的.dta(在Stata在版本14中引入對utf-8的支持之前)。 瑞典語和德語字母å,ä,ö,ß以及其他字符的文本變量不能很好地導入。

我已經嘗試了以下答案: foreign read.dtahaven軟件包(沒有編碼參數)和現在的read_stata13 ,這告訴我它希望Stata文件在CP1252中進行編碼 但是,a,編碼不起作用。 我應該放棄並使用.csv-export作為橋接,還是實際上可以在R中讀取.dta文件?

最小示例:
這段代碼下載了我的數據集的前幾行,並舉例說明了問題,例如在包含北歐語言的變量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

在Mac上,讀取Stata之前的版本14生成的文件的正確編碼是"macroman"

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

在我的Mac上,stata13和stata12格式的.dta文件(在stata 13中由saveold保存)都很好地導入了。

假設read_stata13的手冊在其他平台上正確假定為"CP1252" 對我而言, "macroman"起到了作用(也適用於Stata 13生成的帶export delimited.csv文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM