例えば、
dates <- c("25–27 Oct", "25 Oct", "24–25 Oct", "23–24 Oct", "23–24 Oct",
"22–23 Oct")
それらを日付ベクトルに変換する最良の方法は何ですか? 望ましい結果は、データフレームでそれらを使用して時系列などをプロットできることです。
解決策は次のいずれかになります
- 実用的であり、終了日または
- 開始日と終了日を 2 つのベクトルでリストします。
これはどう?日付が間隔ではない場合、同じ値に"25 Oct"
設定することもできますが、それは出力をどうするかによって異なります。from
to
do.call(rbind, lapply(dates, function(str){
if(grepl("–", str)){
data.frame(from=as.Date(sub("–\\d+", "", str), "%d %b"),
to=as.Date(sub("\\d+–", "", str), "%d %b"))
} else {
data.frame(from = as.Date(str, "%d %b"), to=NA)
}
}))
出力
from to
1 2013-10-25 2013-10-27
2 2013-10-25 <NA>
3 2013-10-24 2013-10-25
4 2013-10-23 2013-10-24
5 2013-10-23 2013-10-24
6 2013-10-22 2013-10-23
あなたは正確に何を保存したいですか?間隔または特定の日付、たとえば間隔の真ん中?
間隔が必要ない場合は、gsub または strptime() を使用して日付を取得してみてください。
http://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html
例:
> s="29 Mai"
> strptime(s,format="%d %b")
[1] "2013-05-29"
%b を処理するために、適切なロケールの時刻/日付を設定することを忘れないでください