我正在尝试使用调查数据准备一个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的新手,也是这个论坛的新手,所以如果提出问题时错过了任何最佳做法,请原谅。
答案 0 :(得分:0)
如The Carpentries所述:
因子存储为整数,并具有与之关联的标签 唯一整数。虽然因素看起来(并且经常表现得像)性格 向量,实际上是引擎盖下的整数,您需要 像对待字符串一样小心。
因子在内部存储为从1开始的整数。您不能更改这些内部存储的值。但是,您可以更改其标签("Yes", "No")
或(0, 1)
。