【问题标题】:How to verify numeric dates for incorrect values?如何验证不正确值的数字日期?
【发布时间】:2021-03-08 22:19:54
【问题描述】:

这是我的示例数据集,从一个 Excel 文件中导入,所有列都被解析为字符。

     id     date
1    1139   21567 
2    2937   27144
3    1933   02/04 /1977 

稍后用as.Date(as.numeric(df$date),origin = "1899-12-30") 转换日期列时,由于某些日期格式不正确,因此会有NA。

能否请您提供一个验证脚本来检查不正确的值(与 ##### 不同的模式)并将id 作为输出输出以便可以手动验证?

id 1933 has an incorrect date

【问题讨论】:

  • 样本数据的预期输出是什么?
  • subset(DF, nchar(date) != 5) 将列出日期不是 5 个字符的所有行。
  • 为什么不检查其中哪些日期变成了 NA,并据此报告 id?为此使用is.na 函数。可能会检查它是否也小于某个值,因为来自 99999 的日期不太可能是真实日期。

标签: r


【解决方案1】:

试试下面的代码:

# create a dataframe

id<-c(1139,2937,1933)
date<-c(2156,27144,"02/04 /1977")
df <- data.frame(id, date)

#create a column to find non-numeric characters in date column

df$IsNum <- !(is.na(as.numeric(df$date)))

#filter dataframe
df[ which(df$IsNum=='FALSE'),]

这将返回:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多