循环使用字符类重新排列日期

时间:2019-01-12 11:30:00

标签: r loops date character strsplit

我需要将大量日期从“ dd / mm / YY”格式重新构建为“ YYYY-mm-dd”格式。 日期存储为字符,我必须保持这种方式。 我尝试过strsplit,但是仅在单个日期有效,而不能循环使用。 编辑 问题的根源在于无法将日期转换为日期类型,我不再确定将其保留为字符的方向是否可以帮助我解决该问题。我将列表替换为一个段,该段在转换为日期时返回NA。 下面的可复制示例。我将不胜感激

ex_dates <- c("12/10/2016", "12/10/2016", "12/10/2016", "12/10/2016", "12/10/2016", "12/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016",
"13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016", "13/10/2016")

# a successful attempt with a single date

d1 <- strsplit("01/01/2016", "/")[[1]]
d1 

#output
[1] "01"   "01"   "2016"

d2 <- paste(c(d1[3],d1[1],d1[2]), collapse = "-")
d2

#output
[1] "2016-01-01"

# a failed attempt with a loop function

ordate <- function(x) {
  for (i in x) {
    adate <- strsplit(i, "/")[[1]]
    bdate <- paste(c(adate[3],adate[1],adate[2]), collapse = "-")
    x <- bdate
  }
}

ordate(ex_list_of_dates)

#output
[1] "01/01/2016" "01/01/2016" "01/01/2016" "01/01/2016" "01/01/2016" "01/01/2016" ... 

0 个答案:

没有答案