Как проверить числовые даты на неправильные значения?

Это мой образец набора данных, импортированный из файла 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

Каков ожидаемый результат для ваших выборочных данных?   —  person Andres Mora    schedule 09.03.2021

subset(DF, nchar(date) != 5) выведет список всех строк, дата которых не превышает 5 символов.   —  person Andres Mora    schedule 09.03.2021

Почему бы не проверить, какая из этих дат превратится в NA, и на основании этого сообщить идентификатор? Используйте для этого функцию is.na. Можете проверить, что это также меньше некоторого значения, поскольку дата, которая когда-либо происходит от 99999, вряд ли будет настоящей датой.   —  person Andres Mora    schedule 09.03.2021

См. также:  Как извлечь количество наблюдений за каждый год
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Andres Mora

    Попробуйте следующий код:

    # 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'),]
    

    Это вернет:  output

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: