Как вернуть NA при преобразовании строки с начальным / конечным пробелом в дату в R - PullRequest
0 голосов
/ 13 декабря 2018

Есть ли простой способ вернуть NA при преобразовании строки с пробелом в начале / в конце в дату, когда пробел в начале / конце отсутствует в параметре формата?Можно подумать, что это случай по умолчанию.

# Converts date as expected
as.Date("20180101", format = "%Y%m%d")
# Still converts date, but wanting and expecting to return an NA
as.Date(" 20180101", format = "%Y%m%d")

1 Ответ

0 голосов
/ 13 декабря 2018

Мы можем заменить начальный пробел буквой, и он вернет NA

as.Date(sub("^ ", "T", " 20180101"), format = "%Y%m%d")
#[1] NA

Или используйте chartr для замены

as.Date(chartr(" ", "T", " 20180101"), format = "%Y%m%d")
#[1] NA

Или создайте функцию, которая проверяет наличие пробела trailing/leading и задает для него значение NA перед выполнением преобразования класса Date

dateWithTrailingLeadingSpace <- function(date, format) {
        i1 <- grepl("^ | $", date)
        date[i1] <- NA
     as.Date(date, format = format)
   }

dateWithTrailingLeadingSpace(c(" 20180101", "20180101", "20180101 "), 
        format = "%Y%m%d")
#[1] NA           "2018-01-01" NA         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...