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

问题描述 投票:1回答:1

我正在尝试准备一个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年。 106个变量:

(......) $ AMEVYES:Nmnl。 item w / 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:因子w / 2级别“否”,“是”:1 1 1 1 1 1 1 1 1 2 ...

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

PS:我对R很新,对这个论坛不熟悉,所以请原谅我在制定问题时错过了任何最佳实践。

r dataframe spss
1个回答
0
投票

正如The Carpentries所说:

因子存储为整数,并具有与这些唯一整数相关联的标签。虽然因素看起来(并且通常表现得像)字符向量,但实际上它们是引擎盖下的整数,并且在将它们视为字符串时需要小心。

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

© www.soinside.com 2019 - 2024. All rights reserved.