将月、年和日转换为 SAS 格式的日期
Convert Month and Year and Day to SAS formatted date
再见,我需要帮助将月列、年列和日期列转换为 SAS 格式日期。 SAS 日期值是一个值,表示从 1960 年 1 月 1 日到指定日期之间的天数。 SAS 可以对 A.D 范围内的日期执行计算。 1582 至 A.D。 19,900。 1960 年 1 月 1 日之前的日期为负数; 1960 年 1 月 1 日之后的日期为正 numbers.Example:月=9,年=1992,日=1,日=11946
您可以使用difftime
ss <- "1992-9-15"
difftime(as.Date(ss), as.Date("1960-01-01"))
#Time difference of 11946 days
您没有为您的样本日期指定一天,但向后计算得出 1992 年 9 月 15 日。
存储为numeric
做
date_for_SAS <- as.numeric(difftime(as.Date(ss), as.Date("1960-01-01")))
date_for_SAS
#[1] 11946
更新
如果您有一个包含三列 day
、month
和 year
的 data.frame
,您可以执行以下操作
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
再见,我需要帮助将月列、年列和日期列转换为 SAS 格式日期。 SAS 日期值是一个值,表示从 1960 年 1 月 1 日到指定日期之间的天数。 SAS 可以对 A.D 范围内的日期执行计算。 1582 至 A.D。 19,900。 1960 年 1 月 1 日之前的日期为负数; 1960 年 1 月 1 日之后的日期为正 numbers.Example:月=9,年=1992,日=1,日=11946
您可以使用difftime
ss <- "1992-9-15"
difftime(as.Date(ss), as.Date("1960-01-01"))
#Time difference of 11946 days
您没有为您的样本日期指定一天,但向后计算得出 1992 年 9 月 15 日。
存储为numeric
做
date_for_SAS <- as.numeric(difftime(as.Date(ss), as.Date("1960-01-01")))
date_for_SAS
#[1] 11946
更新
如果您有一个包含三列 day
、month
和 year
的 data.frame
,您可以执行以下操作
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