r - 如何标准化同一列中的混合日期格式

标签 r date dataframe

我有一个数据框,其中一列中的数据当前是“字符”,我需要将其更改为“日期”,但是日期是混合格式,所以我不能只使用 as.Date()。列中也有空白行。这是数据示例

> head(FarmersMkt$StartDate,n = 50)
 [1] "June "       "January "    "05/01/2013 " "July "       "06/17/2013 "   "05/04/2013 " ""            "06/27/2013 "
 [9] "June "       ""            "06/29/2013 " "06/06/2013 " ""                "May "        ""            ""           
[17] "05/11/2013 " "01/01/2013 " ""            "June "       "June "           "06/06/2013 " ""            ""           
[25] ""            "04/20/2013 " ""            ""            "05/11/2013 "     ""            "01/01/2013 " "01/01/2013 "
[33] "06/06/2013 " "May "        "06/23/2013 " "01/01/2013 " "June 17, 2012 "        "June "       ""            ""           
[41] "06/06/2013 " ""            "May "        ""            ""                ""            "04/20/2013 " "01/01/2013 "
[49] "07/13/2013 " "" 

所有年份都应该是 2013 年,日期可以是虚拟数据。如何将此列中的数据转换为日期格式?

最佳答案

假设您知道进行观察的年份,并且您对从“六月”到标准化事物(例如“2013-06-01”(将月份设置为第一天))的映射感到满意,那么我将采用的方法是生成两个新列,第一个将“%m/%d/%Y”格式转换为标准日期,第二个将“%B”格式转换为标准日期。然后ifelse他们在一起。所以像这样:

library(dplyr)

tt <- data.frame(date = c("June", "05/23/2013"))

tt %>% mutate(Date1 = as.Date(date, format = "%m/%d/%Y"),
          Date2 = as.Date(paste0("01-",date,"-2013"), format = "%d-%B-%Y"),
          newdate = ifelse(is.na(Date1), Date2, Date1) %>% as.Date(origin = "1970-01-01"))

关于r - 如何标准化同一列中的混合日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194697/

相关文章:

r - 相当于 R 中混合的 SAS 过程

r - 对散点图;一对多

python - 为什么数据框中的日期分配不是日期类型?

dataframe - 为什么 map 在 DataArray 上操作时会丢弃类型信息?

r - 将 txt 文件读入 R 时遇到问题,其中列由 || 分隔

Java - GAE 数据存储以特定格式保存日期

java - 关于日期格式

pandas - 从 2 个数据帧的 if 条件创建新数据帧

pandas - 如何增加每列/组的索引

r data.frame 创建新变量