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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。