58

R を学習しようとしており、SPSS で開くことができる SPSS ファイルを取り込みたいと考えています。

read.spssfromforeignspss.getfromを使ってみましたHmisc。どちらのエラー メッセージも同じです。

これが私のコードです:

## install.packages("Hmisc")
library(foreign)

## change the working directory
getwd()
setwd('C:/Documents and Settings/BTIBERT/Desktop/')

## load in the file
## ?read.spss
asq <- read.spss('ASQ2010.sav', to.data.frame=T)

結果のエラー:

read.spss("ASQ2010.sav", to.data.frame = T) のエラー: システム ファイル ヘッダーの読み取りエラー さらに: 警告メッセージ: read.spss("ASQ2010.sav", to.data.frame = T) : ASQ2010.sav: 位置 0: 文字 `\000' (

また、SPSS ファイルを SPSS 7 .sav ファイルとして保存しようとしました (以前は SPSS 18 を使用していました)。

警告メッセージ: 1: read.spss("ASQ2010_test.sav", to.data.frame = T): ASQ2010_test.sav: 認識されないレコード タイプ 7、サブタイプ 14 がシステム ファイルで検出されました 2: read.spss("ASQ2010_test. sav", to.data.frame = T) : ASQ2010_test.sav: 認識されないレコード タイプ 7、サブタイプ 18 がシステム ファイルで検出されました

4

15 に答える 15

46

同様の問題があり、read.spssヘルプのヒントに従って解決しました。代わりにパッケージを使用すると、次のような移植可能な SPSS ファイルmemiscをインポートできます。

data <- as.data.set(spss.portable.file("filename.por"))

同様に、.sav ファイルの場合:

data <- as.data.set(spss.system.file('filename.sav'))

この場合、移植可能なインポートはシームレスに機能しますが、いくつかの文字列値が欠けているようです。spss.portable.file申し立てのヘルプ ページ:

ファイル ヘッダーの解析のほとんどが R で行われるため、インポーター メカニズムはパッケージ "foreign" の read.spss および read.dta よりも柔軟で拡張性があります。また、これらは大きなデータ セットを効率的にロードするように適合されています。最も重要なことは、インポーター オブジェクトが、このパッケージによって提供されるラベル、missing.values、および説明をサポートしていることです。

于 2012-09-14T15:10:01.990 に答える
10

これを試すこともできます:

setwd("C:/Users/rest of your path")

library(haven)
data <- read_sav("data.sav")

1 つのフォルダーからすべてのファイルを読み取りたい場合は、次のようにします。

temp <- list.files(pattern = "*.sav")
read.all <- sapply(temp, read_sav)
于 2016-01-19T13:12:16.887 に答える
9

この投稿が古いことは承知していますが、Qualtrics SPSS ファイルを R に読み込む際にも問題がありました。R の read.spss コードはずっと前に PSPP から取得されたもので、しばらく更新されていません。(そして、Hmisc のコードも read.spss() を使用しているため、うまくいきません。)

Qualtrics の [データのダウンロード] ページで [文字列幅] を [Short - 255 (SPSS 12.0 以前)] に指定している限り、PSPP 0.6.1 はファイルを正常に読み取ることができます。それを PSPP に読み込んで、新しいコピーを保存すれば、すぐにビジネスを開始できます。面倒ですが、無料です。

代替テキスト

于 2010-12-11T03:35:11.203 に答える
6

上記のソリューションまたは現在使用しているソリューションを使用してSPSSファイルを読み取ることができます。Rコマンドがファイルと共に供給され、正しく読み取れることを確認してください。同じエラーが発生しましたが、問題は SPSS がそのファイルにアクセスできなかったことです。ファイル パスが正しいこと、ファイルにアクセスできること、およびファイルが正しい形式であることを確認する必要があります。

library(foreign)
asq <- read.spss('ASQ2010.sav', to.data.frame=TRUE)

警告メッセージに関する限り、データには影響しません。レコード タイプ 7 は、古い SPSS ソフトウェアが新しいデータを読み取れるようにするために、新しい SPSS ソフトウェアにフィーチャを格納するために使用されます。ただし、データには影響しません。これを何度も使用しましたが、データが失われることはありません。

これについては、 http://r.789695.n4.nabble.com/read-spss-warning-message-Unrecognized-record-type-7-subtype-18-encountered-in-system-file-td3000775でも読むことができます。 .html#a3007945

于 2014-09-21T20:06:27.063 に答える
5

R read.spss の実装が不完全または壊れているようです。ただし、R2.10.1 は R2.8.1 よりも優れています。2.10.1 (私が持っている最新のもの) でも、R は sav ファイルのカスタム属性に腹を立てているようです。また、R はファイル内の文字エンコーディング フィールドを認識しない可能性があり、特に SPSS Unicode ファイルでは機能しない可能性があります。

SPSS でファイルを開き、カスタム属性を削除して、ファイルを再保存してみてください。SPSS コマンドでカスタム属性があるかどうかを確認できます

表示属性。

その場合は、それらを削除して (VARIABLE ATTRIBUTE および DATAFILE ATTRIBUTE コマンドを参照)、再試行してください。

HTH、ジョン・ペック

于 2010-06-28T23:02:18.267 に答える
2

ここで言及されていない別の解決策は、ODBC を介して R で SPSS データを読み取ることです。必要なもの:

  1. IBM SPSS 統計データ ファイル ドライバー. スタンドアロンのドライバーで十分です。
  2. RODBCR のパッケージを使用して SPSS データをインポートします。

ここの例を参照してください。ただし、非常に大きなデータ ファイルには問題がある可能性があることは認めざるを得ません。

于 2013-03-03T08:42:50.097 に答える
2

SPSS にアクセスできる場合は、ファイルを .csv として保存するため、read.csvまたはでインポートしread.tableます。.sav ファイルのインポートに関する問題は思い出せません。これまでのところ、read.spssとの両方で魅力的に機能していましたspss.get。にspss.get依存するため、異なる結果は得られないと思いますforeign::read.spss

SPSS/R/Hmisc/foreign バージョンに関する情報を提供できますか?

于 2010-06-28T23:38:17.697 に答える
2

私にとっては、memiscを使用してうまく機能します!

install.packages("memisc")
load('memisc')
Daten.Februar <-as.data.set(spss.system.file("NPS_Februar_15_Daten.sav"))
names(Daten.Februar)
于 2015-09-22T10:10:29.467 に答える
1

使用しているパッケージにはそのような問題はありません。spssファイルを読み取るための唯一の要件は、ファイルをPORTABLE形式のファイルに入れることです。つまり、spssファイルの拡張子は*.savです。spssファイルを*.por拡張子を使用するポータブルドキュメントに変換する必要があります。

詳細については、http: //www.statmethods.net/input/importingdata.htmlをご覧ください。

于 2011-12-28T01:53:51.080 に答える
1

SPSS で UNICODE をオフにする

データを開かずに SPSS を開き、シンタックス エディターで以下のコードを実行します。

SET UNICODE OFF.

データセットを開いて再保存し、Unicode を削除します

read.spss('yourdata.sav', to.data.frame=T)その後、正しく動作します

于 2016-08-15T10:59:28.343 に答える
1

私の場合、この警告は、値が -100、2、2、2、... のデータの最初の列の前に新しい変数が出現したこと、ラベルと値の間の対応がシフトしたこと、および最後の列が削除されたことと組み合わされました。変数。うまくいった解決策は、(SPSS を使用して) ファイルの最後の列に新しいダンプ変数を作成し、それにランダムな値を入力して、次のコードを実行することでした: (ファイル名は保存ファイルへのパスで、私の場合は元の SPSSファイルには 62 列があったため、追加のダム変数を使用すると 63 列になりました)

library(memisc)
data <- as.data.set(spss.system.file(filename))

copyofdata = data
for(i in 2:63){
  names(data)[i] <- names(copyofdata)[i-1]
}
data[[1]] <- NULL

newcopyofdata = data
for(i in 2:62){
  labels(data[[i]]) <- labels(newcopyofdata[[i-1]])
}
labels(data[[1]]) <- NULL

上記のコードが他の誰かに役立つことを願っています。

于 2015-01-19T06:58:28.647 に答える
0

1)

spssおよびstataファイルをRにインポートするのに役立つプログラムstat-transferを見つけました。

spssをRデータセットに変換することで、あなたが言及した問題を解決します。また、超大規模なデータセットをRが消費できる小さな部分にサブセット化する場合にも非常に便利です。無料ではありませんが、さまざまなプログラムのデータセットを操作するための非常に便利なツールです。

2)

Memiscパッケージには、試す価値のあるspss関数もあります。

于 2010-06-29T00:01:20.420 に答える
0

havenforeign、またはを使用して開くことmemiscができなかった SPSS ファイルに出くわしましたがreadspss::read.por、私のためにトリックを行いました:

download.file("http://www.tcd.ie/Political_Science/elections/IMSgeneral92.zip",
              "IMSgeneral92.zip")

unzip("IMSgeneral92.zip", exdir = "IMSgeneral92")

# rio, haven, foreign, memisc pkgs don't work on this file! But readspss does:
if(!require(readspss)) remotes::install_git("https://github.com/JanMarvin/readspss.git")
ims92 <- readspss::read.por("IMSgeneral92/IMS_Nov7 92.por", convert.factors = FALSE)

良い!ありがとう、@JanMarvin!

于 2021-03-25T21:01:19.640 に答える