在R中自动应用正确的as.Date格式的功能

时间:2016-12-02 20:01:43

标签: r

我正在尝试创建一个自动确定数据框中列的日期格式并应用正确的as.Date()函数的函数。通常,日期为“%Y-%m-%d”或“%m /%d /%y”(这将根据.csv是否已打开并保存在Excel中而更改。)

最初,我认为“if / else”语句可行,并提出以下内容:

if(nchar(df$date[[1]] == 10)){
    df$Date <- as.Date(df$Date)
} else {
    df$Date <- as.Date(df$Date, format = "%m/%d/%y"

但它会抛出“字符串不是标准的明确格式”错误。

以下是要使用的示例数据框:

a <- seq(1:10)
dates1 <- c("3/21/16", "3/22/16", "3/23/16", "3/24/16", "3/25/16", "3/26/16", "3/27/16", "3/28/16", "3/29/16", "3/30/16")
dates2 <- c("2016-03-21", "2016-03-22", "2016-03-23", "2016-03-24", "2016-03-25", "2016-03-26", "2016-03-27", "2016-03-28", "2016-03-29", "2016-03-30")

df <- data.frame(a, dates1, dates2)

df$dates1 <- as.character(df$dates1)
df$dates2 <- as.character(df$dates2)

if / else语句应该可以处理“dates1”和“dates2”,但正如您所看到的,它只适用于“dates2”

if(nchar(df$dates1[[1]] == 10)){
      df$dates1 <- as.Date(df$dates1)
} else {
      df$dates1 <- as.Date(df$dates1, format = "%m/%d/%y")
}

if(nchar(df$dates2[[1]] == 10)){
      df$dates2 <- as.Date(df$dates2)
} else {
      df$dates2 <- as.Date(df$dates2, format = "%m/%d/%y")
}

提前为任何格式问题道歉。

0 个答案:

没有答案