R 'memisc'包:为什么"as.data.frame()"在 data.frame 中将 data.set 的 0/1 值更改为 1/2?

  • 本文关键字:data frame set memisc as 中将 r dataframe spss
  • 更新时间 :
  • 英文 :


我正在准备一个带有调查数据的SPSS.sav数据文件,用于在R中进行分析。现在我有一个问题,一些二进制值为0/1(表示no/yes(的变量被意外地转换了。

我已使用memisc包将数据导入为data.set对象。

Dset.core <- spss.system.file(file="C://..../data_coded.sav",
varlab.file=NULL,
codes.file=NULL,
missval.file=NULL,
count.cases=TRUE,
to.lower=FALSE      
)

从我从str()codebook()输出中看到的情况来看,这一切都很好。0/1变量$AMEVYES(标签为0=否,1=是(的一个示例如下:

str(Dset.core)

具有1999 obs.的106个变量的数据集:

(…(
$AMEVYES:Nmnl。项目w/2个标签,用于0,1数量0,0 0 0 0,0,0 1。。。

我现在想将memisc创建的特殊data.set对象转换为具有以下属性的数据帧:

Dset2Df.core <- as.data.frame(Dset.core)

按照预期,将标称0/1变量更改为具有相应水平的因子变量。但出于某种奇怪的原因,此过程还将变量的从0/1更改为1/2,如本例输出:

str(Dset2Df.core) 

"数据帧":1999 obs.of 106 variables:

(…($AMEVYES:因子w/2级"否"、"是":1 1 1 1 11 1 1 1 2。。。

为什么会发生这种情况,最重要的是,我如何才能阻止这种情况的发生?非常感谢你的提示!

附言:我是R的新手,也是这个论坛的新手,所以如果我在提出问题时错过了任何最佳实践,请原谅。

正如木匠们所说:

因子存储为整数,并具有与这些整数相关联的标签唯一整数。而因素看起来(通常表现(像性格向量,它们实际上是引擎盖下的整数,你需要把它们当作绳子对待时要小心。

因子内部存储为从1开始的整数您不能更改这些内部存储的值。但是,您可以更改它们的标签("Yes", "No")(0, 1)

最新更新