如何修复具有混合字符的数据框中的日期

How to fix dates in a data frame that have mixed characters

我通过openxlsx导入了一个数据集到一个数据框中。电子表格有多个字段,包括几个日期字段。在这些日期字段中有一些字符——特别是 "A" 和“*”。所以我的数据集是这样的:

一个 | 43998

乙 | 44316

C | 44284

D | 2019 年 3 月 11 日 A

E | 44323

F | 20 年 7 月 29 日*

我正在使用多个日期字段,并且正在寻找一种快速修复它们的方法(与过滤相反,str_replacing,然后更改数据类型,然后重新绑定)。

我一直在研究 lubridate,但是当日期如此不同时我找不到方法。

library(openxlsx)
library(lubridate)

data <- read.xlsx(file)
data2 <- data %>% mutate(fixed_date1 = ifelse(str_detect(date1,
   " A")==TRUE,as.Date(date1, guess_formats(date1,
   "dmy")),as.Date(as.numeric(date1)-2,origin = "1900-01-01")))

这仍然没有说明那里漂浮的星号,我想我必须在 ifelse 语句中构建一个 str_detect(date1, "\\*") 行...

我只是希望找到一种方法,一次滑动即可将其应用到每一列。

提前致谢。

我用几行就解决了:

df$date1 <- str_replace_all(df$date1, " A", "")
df$date1 <- str_replace_all(df$date1, "\*", "")
df <- df %>% mutate(fixed_date1 = ifelse(str_detect(date1, "-") == TRUE, as.Date(date1,
      "%d-%b-%y"), as.Date(as.numeric(date1)-2, origin = "1900-01-01")))

所以我找到并替换了所有特殊字符,然后根据其中是否有“-”进行了日期转换。

可能有更简单的方法,但这对我有用。