나는 R의 날짜, 예컨대 : 내가 as.Date('2010-03-17')
을 받고, 윤년과 같은 문제에 대한 걱정없이,이 날짜로부터 2 년을 빼기 싶습니다년을 빼는 방법?
dt = as.Date('2010/03/17')
있습니다.
어떻게하면됩니까?
나는 R의 날짜, 예컨대 : 내가 as.Date('2010-03-17')
을 받고, 윤년과 같은 문제에 대한 걱정없이,이 날짜로부터 2 년을 빼기 싶습니다년을 빼는 방법?
dt = as.Date('2010/03/17')
있습니다.
어떻게하면됩니까?
가장 쉬운 방법은 POSIXlt로 변환하고 연도 슬롯에서 2를 빼는 것입니다.
> d <- as.POSIXlt(as.Date('2010/03/17'))
> d$year <- d$year-2
> as.Date(d)
[1] "2008-03-17"
이 관련 질문보기 : How to subtract days in R?.
당신은 seq
사용할 수 있습니다
R> dt = as.Date('2010/03/17')
R> seq(dt, length=2, by="-2 years")[2]
[1] "2008-03-17"
단순한 확장자가 없다면 날짜 목록에 적용 할 방법이 없습니다 – MichaelChirico
같은 대답으로 (MichaelChirico에 대답하기 위해, 내가 할 수있는 '코멘트가 없습니다. 충분한 담당자가 없습니다.) :
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"
윤년 - 우리가 할`difftime` RCS의의 아래 답변
> 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"
2 월 28 일에서 3 월 1 일 사이에 대회가 개최됩니다. 'NA'는 분명히 받아 들일 수 없다고 나는 동의한다. 정보를 추가해 주셔서 감사합니다. – gt6989b
이 바람직하다 : 다른 방법은 3 월 1 일 또는 NA 중 하나를 반환으로의가 고려되어야하는 그때, 달을 빼기이 lubridate 기능을 사용하는 것이 좋습니다 것 그것을위한 연산자. –
difftime과 함께, 나는 당신이 몇 년, 며칠 또는 몇 주를 할 수 있다고 생각하지 않습니다. – gt6989b
2 월 29 일의 경우 결과 개체의 wday/mon/mday 슬롯이 올바르지 않을 수 있으므로주의하십시오! 'd = as.POSIXlt ('2016-02-29', tz = 'GMT'); d $ year = d $ year - 1' 그리고'd $ wday, d $ mon, d $ 값을 확인하십시오. mday' – digEmAll