2

read.table 関数を使用して、PISA 2012 調査 ( http://pisa2012.acer.edu.au/downloads.php ) から Rにデータを読み込もうとしています。これは私が試したコードです:

pisa  <- read.table("pisa2012.txt", sep = "")    

残念ながら、次のエラーメッセージが表示され続けます。

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  
: line 2 did not have 184 elements    

私は設定しようとしました

header = T

しかし、次のエラーメッセージが表示されます

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  
 :line 1 did not have 184 elements

最後に、.txt ファイルは次のようになります...

http://postimg.org/image/4u9lqtxqd/

ご協力いただきありがとうございます!

4

2 に答える 2

0

最初の行から、個々の変数を区切るためにある種の制御ファイルが必要であることがわかります。したがって、他の環境で PISA を使用して作業した結果、最初の 3 つの列が ISO 3 文字の国コード (ALB など) に対応していることがわかりました。以下は、それらを区切って意味のある方法で理解する必要がある数字と文字です。これにはコードブック ( https://pisa2012.acer.edu.au/downloads/M_stu_codebook.pdf ) を使用できますが、それはすべての変数にとって非常に重要です。SPSS または sAS でダウンロードしてインポートしませんか? 「巧妙な」ソリューションではありませんが、制御ファイルがなければ、多くの手作業が必要になります。

于 2015-10-07T09:40:16.120 に答える
0

readrパッケージを使用してファイルを読み取るだけです。必要なものは、readr パッケージ、TXT ファイル、SASciiパッケージ、および関連する sas ファイルです。

では、生徒のファイルを読みたいとしましょう。次に、次のファイルが必要になります: INT_STU12_DEC03.txt および INT_STU12_DEC03.sas。

##################### READING STUDENT DATA  ###################
## Loading the dictionary
dic_student = parse.SAScii(sas_ri = 'INT_STU12_SAS.sas')

## Creating the positions to read_fwf
student <- read_fwf(file = 'INT_STU12_DEC03.txt', col_positions = fwf_widths(dic_student$width), progress = T)
colnames(student) <- dic_student$varname

OBS 1: Linux を使用しているため、sas ファイルから最初の行を削除し、エンコーディングを UTF-8 に変更する必要がありました。

OBS 2: 削除された行は次のとおりです。

libname  M_DEC03 "C:\XXX"; 
filename STU "C:\XXX\INT_STU12_DEC03.txt"; 
options nofmterr;

OBS 3: データセットは約 1Gb かかるため、十分な RAM が必要です。

于 2015-10-25T05:40:52.157 に答える