阅读混合格式的日期

时间:2017-08-30 11:12:36

标签: r date readr

如果一列日期包含两种不同的格式,是否有办法解析这两种格式,以便获得2行2012-04-01而不是下面的结果?

# A tibble: 2 x 1
        date
      <date>
1 2012-04-01
2         NA

**Example Code**
library(tidyverse)
data <- read_csv("date\n01/04/12\n41000", col_types = cols_only("date" = col_date("%d/%m/%y")))
head(data)

2 个答案:

答案 0 :(得分:0)

您可以尝试以下内容,而不是在读取数据时强制使用日期数据类型:

data <- read_csv("date\n01/04/12\n41000")
data %>% mutate(date =ifelse(is.numeric(date), as.Date(date, origin = "1990-01-01"), date))

答案 1 :(得分:0)

这个解决方案似乎有效,尽管可能不是最优雅的解决方案:

library(tidyverse)
library(lubridate)
data <- read_csv("date,text\n01/04/12,a\n41000,b\n02/02/13,c")
data <- data %>% 
  mutate(date1 = as_date(as.numeric(date), origin = "1899-12-30")) %>% 
  mutate(date2 = as_date(date, "%d/%m/%y")) %>% 
  mutate(date3 = if_else(is.na(date1), date2, date1))
head(data)