58

この質問の単純さについて、事前にお詫び申し上げます。次のコードを使用して、.datファイルをWebサイトからRにインポートしようとしています。

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

data.frameのValue部分にアクセスしたいのですが、data.frameのディメンションがわかりません。ncol(data)と入力すると、3を期待していた1が返されます。このdata.frameの「3番目の」列にアクセスするにはどうすればよいですか?

4

1 に答える 1

70

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なりますが、インポートする列の実際の名前を把握するのに役立ちます。

しかし、データセット全体を読み込んで後で抽出するよりも、これを行うことの利点はあまりありません。

于 2012-07-26T07:05:51.980 に答える