1

read.spss を使用して SPSS ファイルを R に読み込もうとしています。これは非常に大きなファイル (The World Values Survey) で、約 67,000 のエントリがあります。

エラーのあるコードは次のとおりです。

> library(foreign)
> wvs = read.spss("C:/wvs2005_v20090901a.sav",to.data.frame=TRUE)
Warning messages:
1: In read.spss("C:/wvs2005_v20090901a.sav", to.data.frame = TRUE) :
C:/wvs2005_v20090901a.sav: Unrecognized record type 7, subtype 8 encountered in system file
2: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
3: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
4: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
5: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
6: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
7: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
8: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore
9: In `levels<-`(`*tmp*`, value = c("Missing; Unknown", "Not asked",  :
duplicated levels will not be allowed in factors anymore

どんな洞察も大歓迎です。

4

4 に答える 4

4

を読み込むために別の関数を試しましたspssか? 私は2つ見つけました:

?read.spss PSPP コードベースに基づく別のインターフェイスがパッケージ 'memisc' で利用可能です: 'spss.system.file' のヘルプを参照してください。

また、パッケージには、 「SPSS ファイルの拡張インポート」を提供Hmiscする機能があります。spss.get

Hmisc::spss.get最初に試してみることをお勧めします。

于 2011-12-06T06:13:56.913 に答える
2

R の最近のバージョンでは、値が重複しているというエラーが発生するように変更されています。

SPSS Statistics では、複数の値に同じ値ラベルを付けることができます (通常はこれを行う必要はありませんが、場合によっては便利です)。R は、変数を因子に変換するときに、値ラベルを使用して因子レベルを定義する場合があり、これによりこのタイプのメッセージが発生します。

read.spss 呼び出しに use.value.labels=FALSE を追加すると、このメッセージは表示されません。もちろん、factor() で labels= の代わりに level= を使用して、自分で因子を作成する必要があります。

不明なレコード 7 サブタイプに関する警告メッセージが引き続き表示される場合があります。R パッケージはすべてのレコード 7 情報を解釈する方法を知らないため、失われるだけです。多くの場合、これは無害ですが、念のためにデータを再確認する必要があります。

SPSS Statistics は R コードを実行でき、Statistics と R の間でデータを正しく転送する API を提供します。

HTH、ジョン・ペック

于 2011-12-07T02:43:26.587 に答える
1

SPSS ファイルを読み込もうとすると、同じエラーが発生することがよくありますが、先に進み、read.spss という名前のオブジェクトを思い出すと、何とかすべて問題ありません。

「wvs」と呼ばれるオブジェクトをクリックしようとしていないと思います

前に提案したことをもう一度試してから、以下のように wvs を呼び出します。

wvs <- read.spss("C:/wvs2005_v20090901a.sav", use.value.labels = FALSE,
           to.data.frame=TRUE)
head(wvs)

ファイルが非常に大きいため、「wvs」から「head(wvs)」に編集しました。

于 2011-12-06T15:52:36.733 に答える
0

ESSサイト(European Social Survey)のデータでもまったく同じ問題が発生し、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:19:23.443 に答える