【发布时间】:2018-12-15 10:18:46
【问题描述】:
我正在尝试准备一个包含调查数据的 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。带有 0,1 个标签的项目 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 obs。 106 个变量:
(...) $ AMEVYES : 因子 w/ 2 个级别 "否","是": 1 1 1 1 1 1 1 1 1 2 ...
为什么会发生这种情况,最重要的是,我怎样才能阻止这种情况发生? 非常感谢您的提示!
PS:我对 R 和这个论坛比较陌生,所以如果我在提出问题时错过了任何最佳实践,请原谅。
【问题讨论】:
-
在寻找其他东西时偶然发现了这个问题。关于你的问题;我们缺少practical reproducible example。为什么不显示 5 行,而不是 106 个变量的所有 1999 行?
head(Dset2Df.core$AMEVYES, 5)。另外,想要的输出不清楚,要不要保留"Yes", "No"AND0,1?