0

私はいくつかの hdf5 データセットを扱っています。ただし、日付はファイルに保存され、ファイル名からのこれらの日付のヒントはありません。属性ファイルは、年、月、日、および年の列で構成されます。データを引き出して、時系列に使用できる各ファイルの時系列アイデンティティを作成したいと思います。つまり、時系列に使用できる年月日形式です。データのサンプルは、次の場所からダウンロードできます。

[ ftp://l5eil01.larc.nasa.gov/tesl1l2l3/TES/TL3COD.003/2007.08.31/TES-Aura_L3-CO_r0000006311_F01_09.he5 ]

属性グループファイルとデータグループファイルがあります。Rライブラリ "rhdf5" を使用して、hdf5 ファイルを調べます。例えば

CO1<-h5ls ("TES-Aura_L3-CO_r0000006311_F01_09.he5")
Attr<-h5read("TES-Aura_L3-CO_r0000006311_F01_09.he5","HDFEOS INFORMATION/coremetadata")
Data<-h5read("TES-Aura_L3-CO_r0000006311_F01_09.he5", "HDFEOS\SWATHS\ColumnAmountNO2\Data Fields\ColumnAmountNO2Trop")

読み取り時の Attr は、取得日である「2007-08-31」だけが必要な情報を持つ長い文字列で構成されます。Stringr ライブラリを使用してこれを抽出できました。

regexp <- "([[:digit:]]{4})([-])([[:digit:]]{2})([-])([[:digit:]]{2})"
Date<-str_extract(Attr,pattern=regexp)

Date を次のように返します。

"2007-08-31"

現在残っている唯一の問題は、日付が数値または日付として認識されないことです。時系列を作成するためにすべての日のデータに日付をバインドする必要があるため、これを変更するにはどうすればよいですか (データ セットが不規則であるため、識別子のようなものです)。文字列から日付を抽出し、各日付の CO 値にバインドした後のサンプルは次のとおりです。

       Dates        CO3b        
[1,] "2011-03-01" 1.625811e+18
[2,] "2011-03-04" 1.655504e+18
[3,] "2011-03-11" 1.690428e+18
[4,] "2011-03-15" 1.679871e+18
[5,] "2011-03-17" 1.705987e+18
[6,] "2011-03-17" 1.661198e+18
[7,] "2011-03-17" 1.662694e+18
[8,] "2011-03-20" 1.520328e+18
[9,] "2011-03-21" 1.510642e+18
[10,] "2011-03-21" 1.556637e+18

ただし、Rはこれらの日付を日付ではなく文字として認識します。それらを使用できる時系列に変換する必要があります。

4

2 に答える 2

0

あなたはすでにすべての大変な仕事をしたようです!あなたのコメントに基づいて、フィニッシュ ラインを通過する方法を次に示します。

あなたのコメントから、文字列が適切な形式になっているようです。変数の名前がdateの場合、単純に移動します

 dateObjects<-as.Date(Date)   #where Date is your variable

文字列の単一の値またはベクトル (コメントで指定した形式) が日付オブジェクトになり、zoo などのライブラリで使用して時系列を作成できます。

文字列が説明した形式であるとは限らない場合は、次のリンクを参照して、他の文字列形式を日付として書式設定する方法を確認してください。

http://www.statmethods.net/input/dates.html

サンプル データ フレームを指定すると、パッケージ Zoo を使用して、次の方法で時系列を作成できます。

library(zoo)
datavect<-as.zoo(df$CO3b)
index(datavect)<-as.Date(df$Date)

ここでは、CO データを取得して Zoo オブジェクトに変換し、適切な日付を各エントリに割り当てて、文字から日付オブジェクトに変換します。ここで datavect を印刷すると、日付に添付された各データ エントリが表示されます。これにより、マージやウィンドウなどの Zoo メソッドを利用できます。

于 2014-09-07T19:52:24.593 に答える