2012-07-26 9 views
35

にインポートするこの質問の簡略化のために事前にお詫び申し上げます。 、私はdata.frameの値の部分にアクセスしたいdatファイルをR

www = "http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat" 
data <- read.delim(www, header = TRUE, sep="\t") 

しかし、私は、データの大きさがわからない午前:私は、次のコードでRにウェブサイトから.datファイルをインポートしようとしています.frame、もしncol(data)と入力すると、私は3を期待していた1を返します。このdata.frameの「第3列」にアクセスするにはどうすればよいですか?

+1

+1 [再生可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)の場合+1。 – Andrie

答えて

39

datファイルには、実際のデータの前にいくつかの行の追加情報があります。 skip引数でそれらをスキップ:

read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
      header=TRUE, skip=3) 

あなたがデータセットに慣れていない場合は、これをチェックする簡単な方法は、まず以下のように、いくつかの行をチェックするためにreadLinesを使用することです:

ここ
readLines("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
      n=10) 
# [1] "Ozone data from CZ03 2009" "Local time: GMT + 0"   
# [3] ""       "Date  Hour  Value" 
# [5] "01.01.2009 00:00  34.3" "01.01.2009 01:00  31.9" 
# [7] "01.01.2009 02:00  29.9" "01.01.2009 03:00  28.5" 
# [9] "01.01.2009 04:00  32.9" "01.01.2009 05:00  20.5" 

、実際のデータは[4]で始まるので、最初の3行をスキップすることがわかります。

更新

あなたが本当にだけValue列を望んでいた場合は、でそれを行うことができ:再び

as.vector(
    read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
       header=TRUE, skip=3)$Value) 

readLinesは、私たちは、実際の名前を把握助けるために有用ですインポートする列

しかし、私は表示されません多くのは、全体のデータセットを読み込んで後で抽出することよりも有利です。

+0

ありがとうございます。ですから、これからどのように 'Value'という変数を定義しますか?データ$値は機能せず、ncol(data)は1ですか?私はas.vector(data $ Value)とタイプし、RはNULLを返します。 – KatyB

+1

例をもう一度見てください。あなたはおそらく*まだ 'sep =" \ t "'を持っています。これはすべてを単一の列 'data.frame'に入れます。読み取ろうとしている実際のファイルは、* tabs *ではなく* space *で区切られています。したがって、完全なデータセットが必要な場合は、私の答えの上部にあるソリューションを使用してください。 'Values'カラムだけを別のベクトルとして使いたい場合は、更新後にその部分を使います。私はこれが理にかなってほしい。 – A5C1D2H2I1M1N2O1R2T1

+0

ありがとうございました。私は解決策のその部分を見逃しました。よく働く。 – KatyB

関連する問題