我正在尝试创建一个自动确定数据框中列的日期格式并应用正确的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")
}
提前为任何格式问题道歉。