Конвертировать месяц и год и день в форматированную дату SAS - PullRequest
0 голосов
/ 14 сентября 2018

Чао, мне нужна помощь в преобразовании столбца месяца, года и столбца даты в дату формата SAS.Значение даты SAS - это значение, которое представляет количество дней между 1 января 1960 года и указанной датой.SAS может выполнять вычисления в сроки от 1582 г. до 19 900 г. н.э.Даты до 1 января 1960 года являются отрицательными числами;даты после 1 января 1960 года являются положительными числами. Пример: месяц = ​​9, год = 1992, день = 1, дата = 11946

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать difftime

ss <- "1992-9-15"
difftime(as.Date(ss), as.Date("1960-01-01"))
#Time difference of 11946 days

Вы не предоставляете день для своей даты выборки, но работа в обратном направлении дает 15 сентября 1992 года.

Хранить как numeric до

date_for_SAS <- as.numeric(difftime(as.Date(ss), as.Date("1960-01-01")))
date_for_SAS
#[1] 11946

Обновление

Если у вас есть data.frame с тремя столбцами day, month и year, вы можете сделать следующее

df <- data.frame(
    day = c(1:10),
    month = rep(9, 10),
    year = rep(1992, 10))

df$date_for_SAS <- as.numeric(difftime(
    as.Date(sprintf("%s-%s-%s", df$year, df$month, df$day)),
    as.Date("1960-01-01")))
#   day month year date_for_SAS
#1    1     9 1992        11932
#2    2     9 1992        11933
#3    3     9 1992        11934
#4    4     9 1992        11935
#5    5     9 1992        11936
#6    6     9 1992        11937
#7    7     9 1992        11938
#8    8     9 1992        11939
#9    9     9 1992        11940
#10  10     9 1992        11941
...