12

私は月次データを処理しており、次の形式の日付の文字ベクトルを使用しています。

Sep/2012
Aug/2012
Jul/2012

など、1981年にさかのぼります。私は使用してみました

as.Date(dates, "%b/%Y")

ここで、%bは月の省略形を表しますが、これはNAのみを返します。私は何が間違っているのですか?

注:次gsub()のように、各エントリの前に「01/」を追加するための回避策をすでに見つけました。

01/Sep/2012
01/Aug/2012
01/Jul/2012

その後as.Dates()は機能しますが、これは少しエレガントではないようで、とにかく厳密には正確ではありません。

4

1 に答える 1

18

あなたは動物園のパッケージas.yearmon()で探しています。あなたの日付を考えると

dates <- c("Sep/2012","Aug/2012","Jul/2012")

パッケージをロードして"yearmon"クラスに変換します

require(zoo)
dates1 <- as.yearmon(dates, format = "%b/%Y")
dates1

これは

R> dates1
[1] "Sep 2012" "Aug 2012" "Jul 2012"

メソッド"Date"を使用してクラスのオブジェクトに強制することができますas.Date()

R> as.Date(dates1)
[1] "2012-09-01" "2012-08-01" "2012-07-01"

これは、を介して行ったことを取得するためのより簡単な方法ですgsub()frac日コンポーネントが月のどこまであるかを制御する引数があります。

R> as.Date(dates1, frac = 0.5)
[1] "2012-09-15" "2012-08-16" "2012-07-16"

しかし、それで十分かもしれません。

日付をそのまま保存したい場合は、実際には日付ではありませんが、zooパッケージ内で作業することに満足している場合は、クラスを時系列で"yearmon"あるオブジェクトのインデックスとして使用できます。zoo

于 2012-11-14T20:09:08.640 に答える