Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将年月日转换为SAS格式的日期_R_Date_Sas_Lubridate - Fatal编程技术网

R 将年月日转换为SAS格式的日期

R 将年月日转换为SAS格式的日期,r,date,sas,lubridate,R,Date,Sas,Lubridate,再见,我需要帮助将月列、年列和日期列转换为SAS格式的日期。SAS日期值是一个值,表示1960年1月1日和指定日期之间的天数。SAS可以在从公元1582年到公元19900年的日期范围内进行计算。1960年1月1日之前的日期为负数;1960年1月1日之后的日期为正数。例如:月=9,年=1992,日=1,日期=11946 ss <- "1992-9-15" difftime(as.Date(ss), as.Date("1960-01-01")) #Time difference of 1194

再见,我需要帮助将月列、年列和日期列转换为SAS格式的日期。SAS日期值是一个值,表示1960年1月1日和指定日期之间的天数。SAS可以在从公元1582年到公元19900年的日期范围内进行计算。1960年1月1日之前的日期为负数;1960年1月1日之后的日期为正数。例如:月=9,年=1992,日=1,日期=11946

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

使现代化 如果您有一个包含三列的
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

df您的示例日期为1992年9月,我们错过了一天。谢谢您。现在假设我在dataframe数据中有一列YEAR和一列MONTH。我能做到这一点吗:日期为
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