紀元前 10,000 年から現在までの一連の日付を生成したいと思います。これは、CE (または AD) が 0 の場合は簡単です。
ADtoNow <- seq.Date(from = as.Date("0/1/1"), to = Sys.Date(), by = "day")
しかし、私は 0 ADより前の日付を生成する方法について困惑しています。明らかに、私は現在よりも何年も前に行うことができましたが、何かを BCE と AD としてグラフ化できるとよいでしょう。
Ricardo の提案を拡張するために、動作のテストをいくつか示します。または、そのために働かないでください。
?as.Date
将来の検索者のために大きな太字でJoshua の警告を繰り返します。
as.integer(as.Date("0/1/1"))
[1] -719528
as.integer(seq(as.Date("0/1/1"),length=2,by="-10000 years"))
[1] -719528 -4371953
seq(as.Date(-4371953,origin="1970-01-01"),Sys.Date(),by="1000 years")
# nonsense
[1] "0000-01-01" "'000-01-01" "(000-01-01" ")000-01-01" "*000-01-01"
[6] "+000-01-01" ",000-01-01" "-000-01-01" ".000-01-01" "/000-01-01"
[11] "0000-01-01" "1000-01-01" "2000-01-01"
> as.integer(seq(as.Date(-4371953,origin="1970-01-01"),Sys.Date(),by="1000 years"))
# also possibly nonsense
[1] -4371953 -4006710 -3641468 -3276225 -2910983 -2545740 -2180498 -1815255
[9] -1450013 -1084770 -719528 -354285 10957
これはある程度グラフ化には機能するようですが:
yrs1000 <- seq(as.Date(-4371953,origin="1970-01-01"),Sys.Date(),by="1000 years")
plot(yrs1000,rep(1,length(yrs1000)),axes=FALSE,ann=FALSE)
box()
axis(2)
axis(1,at=yrs1000,labels=c(paste(seq(10000,1000,by=-1000),"BC",sep=""),"0AD","1000AD","2000AD"))
title(xlab="Year",ylab="Value")
@JoshuaUlrich がコメントしたように、短い答えはノーです。
ただし、年を別の列に分割して整数に変換することはできます。これはうまくいきますか?
パッケージlubridate
は「負の」年を処理しているようですが、1年0
を作成します。これは、上記のコメントからは不正確であるように思われます。試す:
library(lubridate)
start <- -10000
stop <- 2013
myrange <- NULL
for (x in start:stop) {
myrange <- c(myrange,ymd(paste0(x,'-01-01')))
}