2012-01-23 10 views
1

インポートされたcsvファイルの日付操作を行いたいのですが、最初の列がdd/mm/yyyyという形式の日付列であり、これを行うにはRまたはOctaveを使用したいと思いますこれらの日付に依存して、残りのデータに対してさまざまな行列/ベクトル演算が行われます。csvファイルの日付操作にRまたはOctaveを使用する必要がありますか?

インポートされたcsvファイルの日付には週末は含まれず、他にも欠けている日付があります。ファイルをチェックしてこれらの不足している日付と週末を挿入して日付列が完全になるようにします欠落していない日付と、挿入された日付に関連付けられた「ダミー」の空の値が結果の行列に適切に書き込まれるようにします。これを簡単にするために、どのRまたはOctaveを使用すべきですか?私はOctaveを使ってこれを行うのは非常に面倒ですが、Rについてはわかりません。最終的にすべての日付とデータは、Gnuplotで後でプロットするために別の名前付きテキストファイルに書き込まれます。

さらに、誰かが私が使用する必要のある日付の機能、この問題にどのように近づくかなどのヒントを与えることができれば、それは素晴らしいことです。

+0

はところで、このような質問は、境界線は「主観的かつ閉鎖されるべき」。疑問をより客観的にするために、言い換えた言葉を使いたいかもしれません。 –

答えて

2

金融データを扱っているかのように聞こえます。 Rパッケージのzoo、xts、およびquantmodは、おそらくこの領域の一般的なデータ処理タスクに有効な解決法を提供するため、見直されるべきです。財務カレンダーを定義する他のパッケージもあります。このトピックにもR-SIGメーリングリストがあります。休日以外の平日に限定された他の現実的なシナリオを扱っている場合でも、あなたは(むしろ曖昧に)概説したタスクのために、これらのパッケージで有用な機能を見つけることになります。

"[r] finance calendar"でSOを検索すると、this potentially relevant hitと他のいくつかが表示されます。データがどのように見えると仮定すると

+0

ファイナンスに関するタスクビューもあります:http://cran.r-project.org/web/views/Finance.html –

1

あなたはどちらかで日付を操作することができます。そのため、ほとんどの場合、言語の個人的な好みに至ります。

私はOctaveを使ってからしばらくしていますが、私はRとMATLABを定期的に使用しています。私は個人的にはRをデータ操作(一般的にはデータ操作)に使用します。 Rを選択すると、lubridateパッケージが適しています。

1

私はOctaveを使用したことはありませんが、データ操作のためのRを使用します。最初の列としてDateを使用したCSVファイルがあり、それまでは幸いです。 日付で作業する際に私が提案する関数はstrptime関数です。 csvデータフレームをロードした後、日付文字を日付に変換します。

% if Date is in the first column 
df$Date<-strptime(as.character(df[,"Date"]),tz="CET",format="%d-%m-%Y %H:%M") 

あなたがその日抽出することができ、月と年が...もっと

year<-format(df$Date,"%Y") 
month<-format(df$Date,"%m") 
day<-format(df$Date,"%d") 

多くは、あなたの問題に応じて、使用して:これは一例です。私はあなたに出発点を与えようとしました。がんばろう!

0

date,attr1,attr2,attr3 
"23/01/2011",1,2,3 
"24/01/2011",4,5,6 
"25/01/2011",7,8,9 
"26/01/2011",10,11,12 
"28/01/2011",13,45,55 
"31/01/2011",2,2,2 

その後、あなたは次のことを試すことができます。

data<-read.csv("yourfile.csv") 
#not easy to insert new rows in data frame. So split data and dates 
dates<-as.vector(data[[1]]) 
data<-as.matrix(data[,2:ncol(data)]) 
rows<-nrow(data) 
for(i in 1:(rows-1)){ 
    dd<-as.Date(dates[i],"%d/%m/%y%y") 
    dd1<-as.Date(dates[(i+1)],"%d/%m/%y%y") 
    diff<-dd1-dd 
    if (diff>1){ 
    for (j in 1:(diff-1)){ 
     new.date<-format(dd+j,format="%d/%m/%y%y") 
     dates[length(dates)+1]<-strtrim(paste(new.date,""),10) 
     data<-rbind(data,c(-1,-1,-1)) 
    } 
    } 
} 
関連する問題