[英]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.dta
, haven
软件包(没有编码参数)和现在的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.