Функция, которая изменяет данную дату на тот же день и месяц в другом году - PullRequest
1 голос
/ 21 января 2020

У меня есть функция с именем change_year, в которой принимаются два аргумента: значение типа даты и год как число.

Я должен преобразовать тип даты в строку, а затем извлечь из нее месяц и день. Оттуда мне нужно создать строку, представляющую дату в новом году.

Например, «2020-01-01» становится «2021-01-01» и так далее. Как мне написать это эффективным способом в R?

Ответы [ 2 ]

2 голосов
/ 21 января 2020
change_year <- function(inpDate, outYear = NULL) {

  outDate = inpDate

  if (!is.null(outYear)){

  require(lubridate)

  if(class(inpDate) == "character"){inpDate = ymd(inpDate)}

  inpMonth = month(inpDate)
  inpDay = day(inpDate)

  outDate = ymd(paste(outYear, inpMonth, inpDay, sep = "-"))
  }
  return(outDate)   
}
test.1 <- change_year("2012-10-23", "2020")
test.1
#> [1] "2020-10-23"
class(test.1)
#> [1] "Date"

test.2 <- change_year("2012-10-23")
test.2
#> [1] "2012-10-23"
0 голосов
/ 21 января 2020

Вы можете сделать:

change_year <- function(input, year = NULL){
  a <- as.POSIXlt(input)
  if(!is.null(year)) a$year <- year - 1900
  a
}

change_year("2012-10-23", 2020)
[1] "2020-10-23 PDT"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...