R-将不同的日期格式强制转换为一种格式
我导入了一个凌乱的电子表格,我想在R中处理它。有一个日期字段,它可能以三种方式出现在任意位置的任意顺序:R-将不同的日期格式强制转换为一种格式,r,date,R,Date,我导入了一个凌乱的电子表格,我想在R中处理它。有一个日期字段,它可能以三种方式出现在任意位置的任意顺序: 文本为ddt只需再次添加类,这也避免了警告: ddt <- "2018-01-01" ddn <- 43101 dde <- "43102" dd <- c(ddt,ddn,dde) coerce.Date <- function (dateVar, origin = "1900-01-01", format = "%Y-%m-%d"){ if(!ide
文本为ddt只需再次添加类,这也避免了警告:
ddt <- "2018-01-01"
ddn <- 43101
dde <- "43102"
dd <- c(ddt,ddn,dde)
coerce.Date <- function (dateVar, origin = "1900-01-01", format = "%Y-%m-%d"){
if(!identical(grep("^[[:digit:]]*$", dateVar), integer(0))){
out <- as.Date(as.numeric(dateVar),origin = origin, format = format)
} else {
out <- as.Date(dateVar, origin = origin, format = format)
}
return(out)
}
myDates <- lapply(dd, coerce.Date)
class(myDates) <- "Date"
myDates
dd <- c(ddt,ddn,dde)
dates <- lapply(dd,coerce.Date)
str(dates)
List of 3
$ : Date[1:1], format: "2018-01-01"
$ : Date[1:1], format: "2018-01-04"
$ : Date[1:1], format: "2018-01-03"
unlist(dates)
[1] 17532 17535 17534
dates <- tibble(dates)
unnest (dates)
# A tibble: 3 x 1
dates
<date>
1 2018-01-01
2 2018-01-04
3 2018-01-03
ddt <- "2018-01-01"
ddn <- 43101
dde <- "43102"
dd <- c(ddt,ddn,dde)
coerce.Date <- function (dateVar, origin = "1900-01-01", format = "%Y-%m-%d"){
if(!identical(grep("^[[:digit:]]*$", dateVar), integer(0))){
out <- as.Date(as.numeric(dateVar),origin = origin, format = format)
} else {
out <- as.Date(dateVar, origin = origin, format = format)
}
return(out)
}
myDates <- lapply(dd, coerce.Date)
class(myDates) <- "Date"
myDates