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

时间:2018-12-15 10:18:46

标签: r dataframe spss

我正在尝试使用调查数据准备一个SPSS .sav数据文件,以便在R中执行分析。 现在,我遇到一个问题,一些二进制值为0/1(表示“否” /“是”)的变量被意外地转换了。

我已经使用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。带有2个标签的项,用于0.1 num 0 0 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) 
  

“ data.frame”:1999年发行。共有106个变量:

     
    

(...)     $ AMEVYES:具有2个级别的因子“否”,“是”:1 1 1 1 1 1 1 1 1 2 ...

  

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

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

1 个答案:

答案 0 :(得分:0)

The Carpentries所述:

  

因子存储为整数,并具有与之关联的标签   唯一整数。虽然因素看起来(并且经常表现得像)性格   向量,实际上是引擎盖下的整数,您需要   像对待字符串一样小心。

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