2015-05-06 3 views
1

Я пытаюсь добавить новый столбец с расчетом даты. Расчет, который будет введен в новый столбец, является переменной MaturityDate минус сегодняшняя дата. MatitudeDate в моем наборе данных находится в формате MM/DD/YYYY, а сегодняшняя дата, введенная с помощью Sys.Date(), находится в другом формате, что, по моему мнению, вызывает у меня проблемы при вычислении. помогите пожалуйста!Вычитание двух дат в разных форматах в R

+2

Убедитесь, что оба значения являются правильными значениями даты POSIX в R (см. 'DateTimeClasses'). Звучит прямо сейчас, как один из них, может быть фактором или строкой. Но вам действительно нужно опубликовать [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) с образцовыми входными данными, которые очень похожи на ваши собственные, так что мы можем видеть, что происходит. – MrFlick

ответ

0

Я бы конвертировал даты в один формат, чтобы быть уверенным.

date.to.numeric <- function(x) as.numeric(strptime(x,'%m/%d/%Y')) 
now <- function() as.numeric(strptime(Sys.Date(),'%Y-%m-%d')) 

При этом вы получите разницу во времени в секундах, используя

date.to.numeric(date) - now() 

Также обратите внимание на as.POSIXct для более форматирования даты, если вы хотите что-то другое (например, разница в календарных месяцев).

0

Когда dataframe называется YourDataFrame и ваш новый столбец с желаемым результатом следует назвать newCol:

YourDataFrame$newCol <- as.Date(MaturityDate, "%m/%d/%Y") - Sys.Date() 
2

Использованием пакета lubridate сделать манипуляцию даты легко.

library(lubridate) 
somedate <- mdy("3/14/2015") 
today <- now() 
somedate - today 
Смежные вопросы