3

R: http://www.cdc.gov/nchs/nhis/nhis_2011_data_release.htmで国民健康インタビュー調査からデータを読み取ろうとしています。データは大人のサンプルです。ライブラリにはSAScii実際に関数read.SASciiがあり、そのドキュメントには、使用したい同じデータセットの例があります。問題は、「機能しない」ことです。

NHIS.11.samadult.SAS.read.in.instructions <- 
  "ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Program_Code/NHIS/2011/SAMADULT.sas"
NHIS.11.samadult.file.location <- 
  "ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NHIS/2011/samadult.zip"

#store the NHIS file as an R data frame!
NHIS.11.samadult.df <- 
  read.SAScii ( 
    NHIS.11.samadult.file.location , 
    NHIS.11.samadult.SAS.read.in.instructions , 
    zipped = T, )

#or store the NHIS SAS import instructions for use in a 
#read.fwf function call outside of the read.SAScii function
NHIS.11.samadult.sas <- parse.SAScii( NHIS.11.samadult.SAS.read.in.instructions )

#save the data frame now for instantaneous loading later
save( NHIS.11.samadult.df , file = "NHIS.11.samadult.data.rda" )

ただし、実行するとエラーが発生しますError in toupper(SASinput) : invalid multibyte string 533

同様のエラーが発生した Stack Overflow の他の人もいますが、read.delimやなどの関数についてread.csvは、引数をfileEncoding="latin1"たとえば に変更することをお勧めします。問題read.SASciiは、そのようなパラメーターがないことfileEncodingです。

参照: R: read.csvの無効なマルチバイト文字列と無効なマルチバイト文字列

4

1 に答える 1

2

誰かが同様の問題を抱えている場合に備えて、ASCIIファイルはSAS、したがってWindowsで使用するためのものであるためoptions( encoding = "windows-1252" )、上記のコードを実行する直前に問題と解決策を実行することでした。read.SASciiそして、私はLinuxを使用しています。

ライブラリの作成者はSAScii実際に別の Github リポジトリasdfreeを持っており、そこには利用可能なすべての年の CDC-NHIS データセットや、American Housing Survey、FDA Drug Surveys などのさまざまな調査からの他の多くのデータセットをダウンロードするための作業コードがあります。

次のリンクは、この質問の問題に対する著者の解決策へのリンクです。asdfreeそこから、リポジトリへのリンクを簡単に見つけることができます: https://github.com/ajdamico/SAScii/issues/3

このデータセットに関する限り、https://github.com/ajdamico/asdfree/blob/master/National%20Health%20Interview%20Survey/download%20all%20microdata.R#L8-L13のコードはうまくいきますが、列を因子または数値として適切にエンコードしません。良いことは、NHIS 年度の任意のデータセットについて、10 から 20 未満の数値列しかなく、これらを 1 つずつ数値としてエンコードすることはそれほど苦痛ではなく、残りの列を数値としてエンコードするのに必要なのは非数値列をループします。

2011 年のデータセットしか必要とせずSample Adult、SAS がインストールされたマシンを手に入れることができたので、私にとって最も簡単な解決策は、 http: //www.cdc.gov/nchs/ に含まれている SAS プログラムを実行することでした。 nhis/nhis_2011_data_release.htmを参照して、必要に応じて列をエンコードします。最後にproc export、sas データセットをCSVファイルにエクスポートし、R で簡単に開きました。欠損値を処理する場合を除いて、データを編集する必要はありません。

Sample Adult 以外の NHIS データセットを使用したい場合は、2010 年に利用可能な SAS プログラム「Sample Adult Cancer」を実行したときに注目に値します ( http://www.cdc.gov/nchs/nhis/nhis_2010_data_release.htm ) データを CSV にエクスポートした後、R で CSV ファイルを読み込もうとしたときに、実際の列よりも列名が少ないという問題がありました。最初の行をスキップすると、この問題は解決しますが、説明的な列名が失われます。asdfreeただし、リポジトリ内の R コードでエンコードせずに、この同じデータを簡単にインポートできます。詳細については、ドキュメントを参照してください。

于 2015-12-29T05:22:03.337 に答える