read.spss
位于 foreign
包(package)。 说明
read.spss
读取由 SPSS save
或 export
命令存储的文件。
该文档最初编写于 2000 年,此后对 SPSS 格式更改的支持有限(数量不多)。
用法
read.spss(file, use.value.labels = TRUE, to.data.frame = FALSE,
max.value.labels = Inf, trim.factor.names = FALSE,
trim_values = TRUE, reencode = NA, use.missings = to.data.frame,
sub = ".", add.undeclared.levels = c("sort", "append", "no"),
duplicated.value.labels = c("append", "condense"),
duplicated.value.labels.infix = "_duplicated_", ...)
参数
file |
字符串:要读取的文件名或URL。 |
use.value.labels |
逻辑:将带有值标签的变量转换为R因子有那些水平?仅当标签数量至少与变量值一样多时才会执行此操作(当没有匹配标签的值返回为 |
to.data.frame |
逻辑:返回数据帧? |
max.value.labels |
逻辑:如果 |
trim.factor.names |
逻辑:从因子级别修剪尾随空格? |
trim_values |
逻辑:匹配 |
reencode |
逻辑:是否应该将字符串重新编码为当前语言环境。默认值 |
use.missings |
逻辑:是否应该使用有关用户定义的缺失值的信息将相应的值设置为 |
sub |
字符串:如果不是 |
add.undeclared.levels |
字符:指定如何处理至少具有一个值标签的变量以及没有值标签的其他非缺失值(如 R 中的因子水平)。对于 |
duplicated.value.labels |
字符:如何处理不同级别的重复值标签。对于 |
duplicated.value.labels.infix |
字符:用于 SPSS 中具有重复值标签的因子水平标签的中缀(默认 |
... |
如果 |
细节
这使用 PSPP 项目中的修改代码(http://www.gnu.org/software/pspp/ 用于读取 SPSS 格式。
如果文件名看起来是一个 URL(方案‘http:', 'ftp:' 或者 'https:’)URL 首先被下载到临时文件中,然后读取。 (‘https:' 在支持的地方得到支持download.file
与当前的默认值method
.)
有时,在 SPSS 中,值标签会添加到连续变量的某些值(例如,为了区分不同类型的缺失数据),并且您不希望这些变量转换为因子。通过设置max.value.labels
,您可以指定具有大量不同值的变量即使具有值标签也不会转换为因子。
如果存在 SPSS 变量标签,它们将作为答案的 "variable.labels"
属性返回。
SPSS 在右侧填充固定长度字符串(包括值标签),因此可以通过这种方式读取R。默认参数trim_values=TRUE
导致在匹配值标签时忽略尾随空格,例如字符串和值标签具有不同填充量的示例。请参阅示例sub
了解删除字符数据中尾随空格的方法。
URL https://learn.microsoft.com/en-us/windows/win32/intl/code-page-identifiers 提供从 Windows 代码页编号到 iconv
可能知道的编码名称的转换列表,以及 reencode
的合适值。在 UTF-8 或 latin-1 语言环境中尝试自动重新编码 200 或更多的明显代码页:在大多数系统上可以重新编码其他一些 high-numbered 代码页,但编码名称取决于平台(请参阅 iconvlist
)。
值
一个列表(或可选的 DataFrame ),其中保存的数据集中的每个变量都有一个组件。
如果 SPSS 文件中记录了看起来像 Windows 代码页的内容,则会将其作为属性 "codepage"
附加(作为数字)到结果中。
可能有属性 "label.table"
和 "variable.labels"
。属性 "label.table"
是值标签的命名列表,每个变量有一个元素,可以是 NULL
或命名字符向量。属性 "variable.labels"
是一个命名字符向量,其中名称为短变量名称,元素为长名称。
如果有用户定义的缺失值,就会有一个属性"Missings"
。这是一个命名列表,每个变量有一个列表元素。每个元素都有一个元素type
,一个长度为一的字符向量,给出缺失的类型,并且还可能有一个元素value
与缺失对应的值。这是一个复杂的主题(其中R和 C 源代码read.spss
是主要文档),但最简单的情况是类型"one"
,"two"
和"three"
具有相应数量的(实数或字符串)值,其标签可以从"label.table"
属性。其他可能性是有限范围或semi-infinite 范围,可能加上单个值。也可以看看http://www.gnu.org/software/pspp/manual/html_node/Missing-Observations.html#Missing-Observations.
注意
如果 SPSS 值标签转换为因子,则底层数字代码通常与 SPSS 数值不同,因为 R 中的数字代码始终为 。
您可能会看到有关 SPSS save
文件的文件编码的警告:此类文件可能包含需要重新编码的非 ASCII 字符数据。最常见的情况是 Windows 代码页 1252,它是 Latin-1 的超集。如果结果看起来像 Windows 代码页,则编码会(作为整数)记录在结果的属性 "codepage"
中。自动重新编码仅在 UTF-8 和 latin-1 语言环境中完成:请参阅参数 reencode
。
例子
(sav <- system.file("files", "electric.sav", package = "foreign"))
dat <- read.spss(file=sav)
str(dat) # list structure with attributes
dat <- read.spss(file=sav, to.data.frame=TRUE)
str(dat) # now a data.frame
### Now we use an example file that is not very well structured and
### hence may need some special treatment with appropriate argument settings.
### Expect lots of warnings as value labels (corresponding to R factor labels) are uncomplete,
### and an unsupported long string variable is present in the data
(sav <- system.file("files", "testdata.sav", package = "foreign"))
### Examples for add.undeclared.levels:
## add.undeclared.levels = "sort" (default):
x.sort <- read.spss(file=sav, to.data.frame = TRUE)
## add.undeclared.levels = "append":
x.append <- read.spss(file=sav, to.data.frame = TRUE,
add.undeclared.levels = "append")
## add.undeclared.levels = "no":
x.no <- read.spss(file=sav, to.data.frame = TRUE,
add.undeclared.levels = "no")
levels(x.sort$factor_n_undeclared)
levels(x.append$factor_n_undeclared)
str(x.no$factor_n_undeclared)
### Examples for duplicated.value.labels:
## duplicated.value.labels = "append" (default)
x.append <- read.spss(file=sav, to.data.frame=TRUE)
## duplicated.value.labels = "condense"
x.condense <- read.spss(file=sav, to.data.frame=TRUE,
duplicated.value.labels = "condense")
levels(x.append$factor_n_duplicated)
levels(x.condense$factor_n_duplicated)
as.numeric(x.append$factor_n_duplicated)
as.numeric(x.condense$factor_n_duplicated)
## Long Strings (>255 chars) are imported in consecutive separate variables
## (see warning about subtype 14):
x <- read.spss(file=sav, to.data.frame=TRUE, stringsAsFactors=FALSE)
cat.long.string <- function(x, w=70) cat(paste(strwrap(x, width=w), "\n"))
## first part: x$string_500:
cat.long.string(x$string_500)
## second part: x$STRIN0:
cat.long.string(x$STRIN0)
## complete long string:
long.string <- apply(x[,c("string_500", "STRIN0")], 1, paste, collapse="")
cat.long.string(long.string)
作者
Saikat DebRoy and the R-core team
也可以看看
memisc
包中提供了同样基于 PSPP 代码库的不同接口:请参阅 spss.system.file
的帮助。
相关用法
- R read.ssd 通过 read.xport 从 SAS 永久数据集中获取数据帧
- R read.systat 从 Systat 文件获取数据帧
- R read.dbf 读取 DBF 文件
- R read.mtp 阅读 Minitab 便携式工作表
- R read.dta 读取Stata二进制文件
- R read.octave 读取八度文本数据文件
- R read.epiinfo 读取 Epi 信息数据文件
- R read.xport 读取 SAS XPORT 格式库
- R read.arff 从 ARFF 文件读取数据
- R write.dbf 写入 DBF 文件
- R write.foreign 编写文本文件和代码来读取它们
- R write.dta 以 Stata 二进制格式写入文件
- R S3 读取 S3 二进制或 data.dump 文件
- R lookup.xport 有关 SAS XPORT 格式库的查找信息
- R write.arff 将数据写入 ARFF 文件
- R forcats fct_relevel 手动重新排序因子级别
- R forcats as_factor 将输入转换为因子
- R forcats fct_anon 匿名因子水平
- R forcats fct_rev 因子水平的倒序
- R forcats fct_match 测试因子中是否存在水平
- R forcats fct_relabel 使用函数重新标记因子水平,并根据需要折叠
- R forcats fct_c 连接因子,组合级别
- R forcats fct_collapse 将因子级别折叠为手动定义的组
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Read an SPSS Data File。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。