gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:02:14 25 4
gpt4 key购买 nike

我有一个数据框,其中一列中的数据当前是“字符”,我需要将其更改为“日期”,但是日期是混合格式,所以我不能只使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com