Aslında, yukarıda (ve SO'da başka yerlerde) belirtildiği gibi, dizeyi bir tarihe dönüştürmek için ayın belirli bir tarihine ihtiyacınız vardır. Gönderen as.Date()
manuel sayfa:
Tarih dizesi tarihi tam olarak belirtmiyorsa, döndürülen yanıt sisteme özgü olabilir. En yaygın davranış, eksik yıl, ay veya günün mevcut olan olduğunu varsaymaktır. Bir tarihi yanlış belirtirse, güvenilir uygulamalar hata verir ve tarih NA olarak bildirilir. Ne yazık ki bazı yaygın uygulamalar (gibi glibc
) güvenilmezdir ve amaçlanan anlamı tahmin eder.
Basit bir çözüm, tarihi "01"
her tarihe yapıştırmak ve strptime()
bunu o ayın ilk günü olarak belirtmek olabilir.
R'de tarih ve saatleri işleme konusunda biraz daha fazla bilgi arayanlar için:
R'de, zamanlar kullanılır POSIXct
ve POSIXlt
sınıflar ve tarihler Date
sınıfı kullanır .
Tarihler, 1 Ocak 1970'den itibaren gün sayısı olarak saklanır ve zamanlar, 1 Ocak 1970'ten itibaren saniye sayısı olarak saklanır.
Yani mesela:
d <- as.Date("1971-01-01")
unclass(d)
pct <- Sys.time()
unclass(pct)
plt <- as.POSIXlt(pct)
up <- unclass(plt)
names(up)
up$hour
Tarih ve saatlerde işlem yapmak için:
plt - as.POSIXlt(d)
Tarihleri işlemek için şunları kullanabilirsiniz strptime()
(bu örnekleri kılavuz sayfasından ödünç alarak):
strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
dates <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
strptime(dates, "%d%b%Y")