【问题标题】:How to return NA when converting string with leading/trailing whitespace to date in R在R中将带有前导/尾随空格的字符串转换为日期时如何返回NA
【发布时间】:2019-05-14 23:17:38
【问题描述】:

当前导/尾随空格不在格式参数中时,将带有前导/尾随空格的字符串转换为日期时,是否有一种简单的方法可以返回 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")

【问题讨论】:

  • ?as.Date 中至少记录了 尾随 空格的处理:“字符字符串按照指定的格式进行处理:忽略任何尾随字符”。 as.Date("2018-12-13 This is ignored")

标签: r string date


【解决方案1】:

我们可以用字母替换前导空格,它会返回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 空间,并在进行Date 类转换之前将其设置为NA

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         

【讨论】:

  • 谢谢。奇怪的是我的问题需要这样的解决方法
猜你喜欢
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2010-09-22
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
相关资源
最近更新 更多