将字符转换为日期和数字,并保持相同的格式

时间:2018-09-17 01:50:37

标签: r

在变量day和sales下方的代码输出中,我使用的格式不是我所需要的格式,而是输出类型chr。变量应分别为日期和数字。我已经尝试了很多事情,但是遇到chr或某种错误。例如,使用as.Date()不会将可变日更改为格式"%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 :(得分:0)

我不确定我是否理解你的问题。

要以特定的日期时间格式打印一个Caches对象,可以使用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")