R 混乱的日期转换为正确的年月序列

问题描述 投票:0回答:1

我在 xlsx 中有一个日期列,没有日期序列。我想转换日期列,使其按从

08-23
开始的年份顺序显示,例如
4 Aug
变为
04-08-2023
等等
11-08-2023

我从源代码中尝试过的内容使用日期

FixDate-> as.Date(xlsx_filePath$Date, origin = "4 Aug")
openxlsx::convertToDate(xlsx_filePath$Date)

FixDate-> as.Date(xlsx_filePath$Date,  format = "%d/%m/%Y")
openxlsx::convertToDate(xlsx_filePath$Date)
日期 坚定
1 月 1 日 坚定9
1 月 8 日 坚定10
12 月 1 日 坚定1
12 月 8 日 坚定2
12 月 14 日 坚定3
8 月 4 日 坚定4
8 月 11 日 坚定5
8 月 25 日 坚定6
9 月 1 日 坚定7
9 月 8 日 坚定8
1 月 14 日 坚定8

预期结果

日期 坚定
2023年4月8日 坚定4
2023年8月11日 坚定5
2023年8月25日 坚定6
2023年1月9日 坚定1
2023年8月9日 坚定2
2023年1月12日 坚定7
2023年8月12日 坚定8
2023年12月14日 坚定3
2024年1月1日 坚定9
2024年8月1日 坚定10
14-01-2024 坚定10
r date shiny xlsx
1个回答
1
投票
library(tidyverse)

df %>% 
  mutate(Date = dmy(str_c(Date, if_else(
    str_detect(Date, "Jan"),
    2024, 2023
  )))) %>% 
  arrange(Date)

# A tibble: 11 × 2
   Date       Firm  
   <date>     <chr> 
 1 2023-08-04 firm4 
 2 2023-08-11 firm5 
 3 2023-08-25 firm6 
 4 2023-09-01 firm7 
 5 2023-09-08 firm8 
 6 2023-12-01 firm1 
 7 2023-12-08 firm2 
 8 2023-12-14 firm3 
 9 2024-01-01 firm9 
10 2024-01-08 firm10
11 2024-01-14 firm8 

数据:

structure(list(Date = c("1 Jan", "8 Jan", "1 Dec", "8 Dec", "14 Dec", 
"4 Aug", "11 Aug", "25 Aug", "1 Sep", "8 Sep", "14 Jan"), Firm = c("firm9", 
"firm10", "firm1", "firm2", "firm3", "firm4", "firm5", "firm6", 
"firm7", "firm8", "firm8")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -11L))
© www.soinside.com 2019 - 2024. All rights reserved.