[英]R - Date format check
我正在嘗試檢查給定日期是否為R
語言中的 dd/mm/yyyy 格式,以及它是否同時為有效日期。 我想要 TRUE 或 FALSE 格式的輸出,例如
輸入:
date<- c('12/05/2016','35/11/2067','12/52/1000')
輸出:
TRUE FALSE FALSE
您可以使用此功能:
IsDate <- function(mydate, date.format = "%d/%m/%y") {
tryCatch(!is.na(as.Date(mydate, date.format)),
error = function(err) {FALSE})
}
IsDate(date)
[1] TRUE FALSE FALSE
代碼的原始來源在這里。
.
您還可以使用 lubridate 包:
library(lubridate)
!is.na(parse_date_time(c('12/05/2016','35/11/2067','12/52/1000'),orders="dmy"))
這是一個處理NA
的矢量化基本 R 函數,並且可以安全地防止 SQL 注入:
is_date = function(x, format = NULL) {
formatted = try(as.Date(x, format), silent = TRUE)
is_date = as.character(formatted) == x & !is.na(formatted) # valid and identical to input
is_date[is.na(x)] = NA # Insert NA for NA in x
return(is_date)
}
讓我們試試:
> is_date(c("2020-08-11", "2020-13-32", "2020-08-11; DROP * FROM table", NA), format = "%Y-%m-%d")
## TRUE FALSE FALSE NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.