首页 > 解决方案 > 如何将 SAS 日期转换为 R 日期(或 SAS 日期时间转换为 R 日期时间)

问题描述

有谁知道,如何将 sas 日期(01JAN1990)转换为 r 日期(或 sas 日期时间到 ar 日期时间?)

df <- data.frame(date1 = c("01JAN1990", "02AUG2010"), date2=c("24DEC2016:11:60:60","25DEC2017:12:00:00"))
df$date1 <- as.character(df$date1)
df$date2 <- as.character(df$date2)
df

我可以使用as.Date(df$date1, "%d%m%Y")m 的另一个值吗?


编辑:为什么我不能分割日期时间变量的日期部分date2并应用 %d%B%Y?

df <- data.frame(date1 = c("01JAN1990", "02AUG2010"), date2=c("24DEC2016:11:60:60","25DEC2017:12:00:00"))
df$date1 <- as.character(df$date1)
df$date2 <- as.character(df$date2)
df %>% mutate(date3 = substr(date2, 1, 9),
              date4 = as.Date(date3, "%d%B%Y")) %>% glimpse()

这给了我 NA 值 ( date4)

标签: rdatesas

解决方案


如果你仍然得到NAs,这里有一个解决方法

library(lubridate)
df <- data.frame(date1 = c("01JAN1990", "02AUG2010"), date2=c("24DEC2016:11:60:60","25DEC2017:12:00:00"))
df$date1 <- as.character(df$date1)
df$date2 <- as.character(df$date2)
#Sys.setlocale("LC_TIME", "C")

df %>% mutate(date3 = substr(date2, 1, 9),
              date4 = format(dmy(date3), "%d%^b%Y")) %>% glimpse()
#Output 
# Observations: 2
# Variables: 4
# $ date1 <chr> "01JAN1990", "02AUG2010"
# $ date2 <chr> "24DEC2016:11:60:60", "25DEC2017:12:00:00"
# $ date3 <chr> "24DEC2016", "25DEC2017"
# $ date4 <chr> "24DEC2016", "25DEC2017"

希望那是你想要的。


推荐阅读