首页 > 解决方案 > 将 R 日期值从字符类转换为日期类

问题描述

我的问题是我正在导入一个 CSV 文件,并试图让 R 将日期列识别为日期并将它们格式化。

到目前为止,我已经实现用 R 中的整数日期值替换下面看到的格式“#yyyy-mm-dd#”。

但是当我在转换前后检查班级时,它仍然说“字符”。

我需要将该列识别为日期类,以便可以将其用于预测。但

DemandCSV <- read_csv("C:/Users/pth/Desktop/Care/Demand.csv")
nrow <- nrow(DemandCSV)
for(i in 1:nrow){
  DemandCSV[i,1] <-as.Date(ymd(substr(DemandCSV[i,1], 2, 11)))
}
DemandCSV[,1] <- format(DemandCSV[,1], "%Y-%m-%d")

在此处输入图像描述 在此处输入图像描述

想出了一个不优雅的解决方案(结果证明这不是一个解决方案)

DemandCSV <- read_csv("C:/Users/pth/Desktop/Care/Demand.csv")
nrow <- nrow(DemandCSV)
for(i in 1:nrow){
  DemandCSV[i,1] <-as.Date(ymd(substr(DemandCSV[i,1], 2, 11)))
  DemandCSV[i,1] <- format(as.Date(as.numeric(DemandCSV[i,1],origin = "01-01-1970")), "%Y-%m-%d")}
DemandCSV %>% pad %>% fill_by_value(0)

标签: rclassdate

解决方案


在格式字符串中包含“#”是否可以解决您的问题?

data <- c("#2019-09-23#", "#2019-09-24#", "#2019-09-25#")
a <- as.Date(data,format="#%Y-%m-%d#")

或者

DemandCSV <- data.frame(date=
 c("#2019-09-23#", "#2019-09-24#", "#2019-09-25#"))
mutate_at(DemandCSV,"date",as.Date,format="#%Y-%m-%d#")

推荐阅读