2

1 年または 1 か月 (たとえば) 1 時間ごとに増加する一連の日付/時刻を持つ単一の列を作成したいと考えています。このシーケンスを生成するために、次のようなコードを使用していました。

start.date<-"2012-01-15"
start.time<-"00:00:00"
interval<-60 # 60 minutes
increment.mins<-interval*60 
x<-paste(start.date,start.time)

for(i in 1:365){
   print(strptime(x, "%Y-%m-%d %H:%M:%S")+i*increment.mins)
}

ただし、日付と時間のシーケンスの範囲を指定する方法がわかりません。また、最初の 1 時間「00:00:00」の処理に問題がありますか? 月、年などの日付/時刻シーケンスの長さを指定する最良の方法がわからない? 任意の提案をいただければ幸いです。

4

2 に答える 2

9

POSIXctデータ型を使用することを強くお勧めします。このようにしてseq、問題なく使用でき、それらのデータを好きなように使用できます。

start <- as.POSIXct("2012-01-15")
interval <- 60

end <- start + as.difftime(1, units="days")

seq(from=start, by=interval*60, to=end)

これで、タイムスタンプのベクトルでやりたいことが何でもできます。

于 2012-12-23T07:17:16.370 に答える
1

これを試して。 mondateは 1 か月進めるのがとても上手です。たとえば、1 月の最終日を 2 月の最終日に進めますが、他の日付/時刻クラスは 3 月にオーバーシュートする傾向があり chronます。 . 以下x、質問より。

library(chron)
library(mondate)

start.time.num <- as.numeric(as.chron(x))

# +1 means one month.  Use +12 if you want one year.
end.time.num <- as.numeric(as.chron(paste(mondate(x)+1, start.time)))

# 1/24 means one hour.  Change as needed.
hours <- as.chron(seq(start.time.num, end.time.num, 1/24))
于 2012-12-24T22:00:25.023 に答える