수만 개의 항목이있는 날짜 변수가있는 데이터 프레임이 있습니다. 나는 날짜 클래스 변수로 바꾸거나 lubridate()에서 처리 할 수 없으므로 어딘가에서 데이터 입력 실수가있을 수 있다고 생각합니다.ifelse() 문제 해결 날짜
이 MWE에서 첫 번째 관찰 (a1)은 내 날짜가 예상되는 형식의 합법적 인 날짜입니다. 다른 관찰 (a2-a7)은 다른 종류의 데이터 입력 실수를 나타냅니다. 관측치가 예상되는 형식의 합법적 인 날짜인지 확인하기 위해 날짜 변수의 각 관측치를 테스트하고 싶습니다.
정규 패턴과 ifelse()를 사용해 보았지만 작동 코드를 얻을 수 없습니다. df2 (데이터 프레임 일 필요는 없지만)와 같이 끝내고 싶기 때문에주의가 필요한 날짜 변수 관찰의 ID를 쉽게 식별 할 수 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.
시작 지점 :
df1 <- data.frame(varID=c("a1","a2","a3","a4","a5","a6","a7"),varDate=c("01/01/2015","0101/2016","01/012017","35/01/2018","01/17/2019","01/01/20200","abc"))
이
원하는 결과
을 : 이df2 <- data.frame(varID=c("a2","a3","a4","a5","a6","a7"),VarIssue=c("format issue","format issue","format issue","format issue","format issue","format issue"))
현재 코드 :
ifelse(df1$varDate == (^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$),"ok","format issue")
"ok"형식을 사용하여'as.Date'를 사용하지 말고'NA' ("형식 문제")를 찾으십시오 : is.na (as.Date ("% d/% m/% Y")) – Henrik
인자 또는 문자로 변환 할 수는 있지만 날짜 클래스 변수로 변환 할 수는 없습니다. – LLL
@Henrik 논리가 마음에 들지만 제공된 Regex는 구분 기호로'/','-' 또는'.'를 사용하여 여러 날짜 형식을 허용합니다. – Mako212