Ben Ar bir tarih, ör .: Ben as.Date('2010-03-17')
alma, artık yıllarda ve bu konular hakkında endişelenmeden, bu tarihten itibaren 2 yıl çıkarmak istiyoruzYıllar nasıl çıkarılır?
dt = as.Date('2010/03/17')
var.
Bunu nasıl yaparım?
Ben Ar bir tarih, ör .: Ben as.Date('2010-03-17')
alma, artık yıllarda ve bu konular hakkında endişelenmeden, bu tarihten itibaren 2 yıl çıkarmak istiyoruzYıllar nasıl çıkarılır?
dt = as.Date('2010/03/17')
var.
Bunu nasıl yaparım?
Yapılması en kolay şey POSIX'e dönüştürmek ve yıl diliminden 2 çıkarmaktır. How to subtract days in R?:
> d <- as.POSIXlt(as.Date('2010/03/17'))
> d$year <- d$year-2
> as.Date(d)
[1] "2008-03-17"
bu ilgili soruya bakın.
Sen seq
kullanabilirsiniz:
R> dt = as.Date('2010/03/17')
R> seq(dt, length=2, by="-2 years")[2]
[1] "2008-03-17"
mday ' – MichaelChirico
lubridate
library(lubridate)
ymd("2010/03/17") - years(2)
Basit bir uzantıyı kaçırmadığım sürece, bunların bir tarih listesine uygulanması için bir yol yoktur. – Farrel
CRAN'dan, CRAN'ın bakıcısı tatilinden döndüğünde. – hadley
Lubridate yazdın mı? R. 'un en rahatsız edici yönlerinden birini ele aldığımı keşfettiğim için, birisinin tatilden dönmesini beklemeden yağmura nereden gelebilirim? – Farrel
aynı cevabı ile (MichaelChirico cevap vermek, yapabilirim 't yorum yok yeterli rep):
R> unlist(lapply(c("2015-12-01", "2016-12-01"),
function(x) { return(as.character(seq(as.Date(x), length=2, by="-1 years")[2])) }))
[1] "2014-12-01" "2015-12-01"
Artık gün varsa - Elimizdeki `difftime` rcs en aşağıda cevap
> library(lubridate)
> dt %m-% months(12*2)
[1] "2008-03-17"
# Try with leap day
> leapdt <- as.Date('2016/02/29')
> leapdt %m-% months(12*2)
[1] "2014-02-28"
28 Şubat veya 1 Mart tarihlerinde bir kongre meselesi olsun. 'NA' kesinlikle kabul edilemez, katılıyorum. Bilgi eklediğiniz için teşekkürler. – gt6989b
tercih edilir: Diğer yöntemler 1 Mart veya NA ya dönecektir olarak s dikkate alınacak daha sonra ben aylarca çıkarmak için bu lubridate işlevini kullanarak öneriyoruz Bunun için operatör. –
Zorlukla, yıllarca yapabileceğinizi sanmıyorum, sadece birkaç gün veya hafta. – gt6989b
Feb-29 durumunda dikkatli olun, çünkü ortaya çıkan nesnenin muhtemelen wday/mon/mday yuvaları doğru olmayacaktır! Deneyin: 'd = as.POSIXlt ('2016-02-29', tz = 'GMT'); d $ yıl = d $ yıl - 1' ve d $ wday, d $ mon, d $ değerlerini kontrol edin – digEmAll