我在 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 |
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))