使用 readstata13 包从 Stata 导入因子变量时出现问题

Problems when importing factor variables from Stata using readstata13 package

我有一个很奇怪的问题。我正在使用 readstata13 包将一些因子变量从 Stata 导入 R。导入的 labels/levels 看起来不错,但在删除因子 class 时它们会发生变化。这是变量的 Stata 描述(here 是再现性数据):

注意一些标签丢失了(更新:实际上,它们并没有丢失。相反,它们被填充了 space,这是编码员用来突出显示丢失标签的一种奇怪方式)。还要注意变量值 13 有 7 个观察值。

所以我在 R 中导入数据并检查级别和频率。一切顺利:

然后我使用 as.integer()(或 as.numeric())删除了关卡,但事情变得一团糟。特别是值 11、12 和 13。注意现在 11 有 7 个观察值,而不是 13:

关于与因素相关的 read.dta13 个选项,问题仍然存在。我尝试了 答案中的第二个建议,使用以下代码,但没有用(很可能是因为只有两个值有标签):

labname <- get.label.name(data,"J_Itm1")
labtab <- get.label(data, labname)
table(get.origin.codes(data$J_Itm1, labtab))

知道如何解决这个问题吗?

似乎问题在于包 readstata13 在 R 中重新创建因子值,而没有保持 Stata 中因子值的顺序。

“解决方案”是不从 Stata 导入关卡。这可以使用 convert.factors = FALSE 选项来实现。虽然不是最佳解决方案,但它对我有用,因为我一开始就不需要因子水平。我在 package's website 中提出了一个问题以查看可能的解决方案。