2

read.table を使用して R でファイル (ascii) を読み込もうとしています。ファイルは次のようになります。

  DAILY MAXIMUM TEMPARATURE  
  YEAR DAY MT DT   LAT. 66.5   67.5   68.5   69.5   70.5
  1969 001 01 01   6.5  99.90  99.90  31.90  99.90  99.90 
  1969 001 01 01   7.5  99.90  20.90  99.90  99.90  23.90
  1969 001 01 01   8.5  99.90  99.90  30.90  99.90  18.90
  .....
  ..... 
  YEAR DAY MT DT   LAT. 66.5   67.5   68.5   69.5   70.5
  1969 001 01 02   6.5  21.90  99.90  99.90  99.90  99.90 
  1969 001 01 02   7.5  99.90  33.90  99.90  99.90  99.90
  1969 001 01 02   8.5  99.90  99.90  15.90  99.90  99.90
  .....
  .....
  YEAR DAY MT DT   LAT. 66.5   67.5   68.5   69.5   70.5
  1969 001 01 03   6.5  99.90  99.90  99.90  99.90  99.90 
  1969 001 01 03   7.5  99.90  99.90  99.90  99.90  99.90
  1969 001 01 03   8.5  99.90  99.90  99.90  99.90  99.90
  .....
  .....

私はそれを読んだ:

inp=read.table("MAXT1969.TXT",skip=1,header=T)

ファイルが読み込まれ、内容が変数 inp に格納されています。

2 つの質問があります -

I. 最初の 5 列を表示するコマンドは、目的の出力とともにいくつかの追加情報を提供します。たとえば、inp[1,5] は次の出力を提供します。

> inp[1,5]
  "[1] 6.5
  33 Levels: 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5 18.5 19.5 20.5 21.5 ... LAT."

余分な情報は必要ありませんが、値のみが必要です。どこが間違っているのですか?

Ⅱ.32 行ごとに、ヘッダー (YEAR DAY ....) があります。定期的にヘッダーを読むことを無視するには?

4

3 に答える 3

6

で始まるすべての行comment.char="Y"を無視するものを試してください。 文字列を因子に変換することを回避します。read.tableYstringsAsFactors=FALSE

inp <- read.table("MAXT1969.TXT", skip = 1, header=FALSE, comment.char="Y", stringsAsFactors=FALSE )

#Read just first row to get header names
cols <- read.table("MAXT1969.TXT", header=FALSE, skip=1, nrows=1  )
names(inp) <- cols  

inp
##   YEAR DAY MT DT LAT. 66.5 67.5 68.5 69.5 70.5
## 1 1969   1  1  1  6.5 99.9 99.9 31.9 99.9 99.9
## 2 1969   1  1  1  7.5 99.9 20.9 99.9 99.9 23.9
## 3 1969   1  1  1  8.5 99.9 99.9 30.9 99.9 18.9
## 4 1969   1  1  2  6.5 21.9 99.9 99.9 99.9 99.9
## 5 1969   1  1  2  7.5 99.9 33.9 99.9 99.9 99.9
## 6 1969   1  1  2  8.5 99.9 99.9 15.9 99.9 99.9
## 7 1969   1  1  3  6.5 99.9 99.9 99.9 99.9 99.9
## 8 1969   1  1  3  7.5 99.9 99.9 99.9 99.9 99.9
## 9 1969   1  1  3  8.5 99.9 99.9 99.9 99.9 99.9

#Since the stringsAsFactor = FALSE was used numbers were read correctly. 
inp[1, 5]
## [1] 6.5
于 2013-04-10T07:59:12.893 に答える
1

質問 1: これは、値がfactor、つまりカテゴリ変数として読み取られたことを意味します。列で使用して、 からにas.numeric変換するだけです。または、引数 toを使用して、ファイル内の列のタイプを直接指定することもできます。factornumericcolClassesread.table

質問 2: を使用して行を読み取り、 usingでreadLines始まる行を見つけ、それらを削除し、この編集された出力をusingに読み取ることができます。代わりに@geektraderのソリューションを使用しますが、完全を期すためにこれを追加したかっただけです。YEARgrepdata.frameread.table(textConnection(edited_data))

于 2013-04-10T08:02:36.557 に答える