Преобразовать символ в дату и число, сохранить тот же формат - PullRequest
0 голосов
/ 17 сентября 2018

В выводе кода ниже переменных день и продажи представлены в нужном мне формате, но не в типе, вместо этого выводится тип chr.Переменные должны быть date и num соответственно.Я перепробовал много вещей, но либо получаю chr, либо какую-то ошибку.Например, использование as.Date() не меняет переменную day на формат "%d/%m/%Y".Код с примерами данных:

library(dplyr)
library(lubridate)

df <- data.frame(matrix(c("2017-09-04","2017-09-05",103,104,17356,18022),ncol = 3, nrow = 2)) 
colnames(df) <- c("DATE","ORDER_ID","SALES")
df$DATE <- as.Date(df$DATE, format = "%Y-%m-%d")
df$SALES <-  as.numeric(as.character(df$SALES))
df$ORDER_ID <-  as.numeric(as.character(df$ORDER_ID))

TOTALSALES <- df %>% 
    select(ORDER_ID,DATE,SALES) %>% 
    mutate(weekday = wday(DATE, label=TRUE)) %>%  
    mutate(DATE=as.Date(DATE)) %>% 
    filter(!wday(DATE) %in% c(1, 7) & !(DATE %in% as.Date(c('2017-01-02','2017-02-27','2017-02-28','2017-04-14'))) ) %>% 
    group_by(day=floor_date(DATE,"day")) %>% 
    summarise(sales=sum(SALES)) %>% 
    data.frame()        
TOTALSALES$day <- TOTALSALES$day %>% 
    as.POSIXlt(, tz="America/Sao_Paulo") %>% 
    format("%d/%m/%Y")
TOTALSALES$sales <- TOTALSALES$sales %>% 
    format(digits=9, decimal.mark=",",nsmall=2,big.mark = ".")
TOTALSALES$day <- as.Date(df$DATE, format = "%d/%m/%Y")

Есть идеи, как решить эту проблему, или указание, как это следует сделать?

Оцените любую помощь

1 Ответ

0 голосов
/ 17 сентября 2018

Я не уверен, что понимаю ваш вопрос.

К печать Date объекта в определенном формате даты и времени, который вы можете использовать format

# This *converts* a character vector/factor to a vector of Dates
df$DATE <- as.Date(df$DATE, format = "%Y-%m-%d")

# This *prints* the Date vector as a character vector with format "%d/%m/%Y"
format(df$DATE, format = "%d/%m/%Y")

Минимальный пример

ss <- c("2017-09-04","2017-09-05")

date <- as.Date(ss, format = "%Y-%m-%d")
format(date, format = "%d/%m/%Y")
#[1] "04/09/2017" "05/09/2017"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...