Превращение значения даты R из класса символов в класс даты - PullRequest
0 голосов
/ 26 сентября 2019

Моя проблема в том, что я импортирую файл CSV и пытаюсь заставить R распознавать столбец даты как даты и форматировать их как таковые.

До сих пор мне удалось заменить формат, показанный ниже "# yyyy-mm-dd #", на целочисленное значение даты в R.

Но когда я проверяю класс до и послепреобразование это все еще говорит "характер".

Мне нужно, чтобы столбец был распознан как класс дат, чтобы я мог использовать его для прогнозирования.Но

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")

enter image description here enter image description here

Выяснилось не элегантное решение (оказывается, это не было решением)

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)

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Решает ли ваша проблема включение символа «#» в строку формата?

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#")
1 голос
/ 26 сентября 2019

Может быть проще

  1. Заменить #
  2. Положитесь на anydate из пакета anytime

Демонстрация:

R> data <- c("#2019-09-23#", "#2019-09-24#", "#2019-09-25#")
R> anytime::anydate(gsub("#", "", data))
[1] "2019-09-23" "2019-09-24" "2019-09-25"
R> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...