1

最初の列がdd/mm / yyyy形式の日付列であるインポートされたcsvファイルの日付操作を実行したいのですが、この日付操作の後にさまざまなマトリックスを実行する必要があるため、これにはRまたはOctaveのいずれかを使用しますこれらの日付に応じて、残りのデータに対する/vector操作。

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

さらに、誰かが私が使用する必要のある日付関数、この問題へのアプローチ方法などについてヒントを与えることができれば、それは素晴らしいことです。

4

4 に答える 4

2

まるで財務データを扱っているように聞こえます。Rパッケージzoo、xts、およびquantmodは、この領域の一般的なデータ処理タスクに有効なソリューションを提供するため、おそらくレビューする必要があります。財務カレンダーを定義する他のパッケージがあります。このトピックに特化したR-SIGメーリングリストもあります。データが休日以外の平日に制限されている他の実際のシナリオを扱っている場合でも、(漠然と)概説したタスクに役立つ機能がこれらのパッケージに含まれています。

SOで「[r]財務カレンダー」を検索すると、この潜在的に関連性のあるヒットと他のいくつかのヒットが表示されます。

于 2012-01-23T15:13:41.027 に答える
1

どちらでも日付を操作できるので、ほとんどの場合、言語に対する個人的な好みになります。

Octaveを使用してからしばらく経ちますが、私はRとMATLABを定期的に使用しており、2つのうち、個人的にはデータ操作(および一般的にデータ操作タスク)にはRを好みます。Rを選択した場合、lubridateパッケージは開始するのに適した場所です。

于 2012-01-23T14:58:22.613 に答える
1

私はOctaveを使用したことがありませんが、データ操作、特にDateを最初の列として持つcsvファイルにRを使用しており、これまでのところ満足しています。dateを操作するときに提案する関数は、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")

さらに多くの...あなたの問題に応じて。私はあなたに出発点を与えようとしました。幸運を!

于 2012-01-23T15:08:46.533 に答える
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))
    }
  }
}
于 2012-01-24T10:50:46.863 に答える