SPSSファイルをRに読み込もうとしています。すべてのNASに変わります。内部のエラー

StackOverflow https://stackoverflow.com/questions/8395851

  •  28-10-2019
  •  | 
  •  

質問

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

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

> 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

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

役に立ちましたか?

解決

読むために別の機能を試しましたか? spss?私は2つを見つけました:

から ?read.spssPSPPコードベースに基づいた別のインターフェイスは、パッケージ「Memisc」で使用できます。「spss.system.file」のヘルプを参照してください。

また、パッケージで Hmisc, 、関数があります spss.get, 、「SPSSファイルの拡張されたインポート」を提供します。

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

他のヒント

Rの最近のバージョンは、重複した値に関するエラーが発行される方法で変更されました。

SPSS統計では、複数の値が同じ値ラベルを持つことができます(通常、これを行いたくありませんが、時には有用です)。 Rは、変数を因子に変換する場合、値ラベルを使用して係数レベルを定義する場合があり、それがこのタイプのメッセージを引き起こします。

use.value.labels = false.spss呼び出しでfalseを追加すると、このメッセージは表示されません。もちろん、おそらくfactor()でラベル=の代わりにレベル=を使用すると、要因を自分で作成する必要があります。

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

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

Hth、Jon Peck

私はちょうど覚えています:多くの場合、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)」に編集しました。

私はESSサイトのデータとまったく同じ問題を抱えており(欧州社会調査)、ヒントに続いて解決しました read.spss ヘルプ。パッケージを使用します memisc 代わりに、aをインポートできます ポータブル このようなSPSSファイル:

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

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

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

この場合、私はいくつかの文字列値を見逃しているようですが、ポータブルインポートはシームレスに機能します。のヘルプページ spss.portable.file 請求:

インポーターメカニズムは、ファイルヘッダーの解析のほとんどがRで行われるため、read.spssおよびread.dta of package "forege"よりも柔軟で拡張可能です。最も重要なことは、インポーターオブジェクトがこのパッケージで提供されるラベル、欠落、価値、および説明をサポートすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top