2012-11-29 4 views
4

경영 정보 시스템에서 데이터를 CSV로 다운로드했습니다. 날짜 인 일부 변수가 있으며 "2012/11/16 00:00:00"형식의 문자열로 CSV에 기록됩니다.R 날짜를 변환 할 때 빈 항목을 처리하는 방법

csv 파일을 읽은 후 함수 as.Date()를 사용하여 날짜 변수를 날짜로 변환합니다. 빈 항목이없는 모든 변수에 대해이 작업이 정상적으로 작동합니다. 나는 다음과 같은 오류 메시지가 빈 항목을 포함 할 수있는 사람들을 위해

는 : "문자열은 표준 명확한 형식이 아닌"

내가 0000/00를 "같은과 빈 항목을 대체하는 R을 얻을 수있는 방법

/00 00:00:00 "as.Date() 함수가 중단되지 않도록하려면? 추천할만한 다른 접근법이 있습니까?

+3

'as.Date (c ("2012/11/16 00:00:00", NA))'는 나를 위해 잘 작동하므로 빈 필드에 NA가 아닌 다른 것을 가지고 있다고 가정합니다. 빈 필드를 NA로 변경하는 것이 가장 좋습니다. 'dput()'을 사용하여 데이터의 일부를 게시 할 수 있습니까? –

+0

데이터에 날짜 또는 문자열이 있습니다. dput()에서 출력 된 (응축 된) 결과는 다음과 같습니다. 구조체 (1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 1L, 9L, 9L), 레이블 = c ("", "2012/10/04 00:00:00", "2012/10/09 00:00:00 ","2012/10/15 00:00:00 ","2012/11/02 00:00:00 ", "2012/11/12 00:00:00 "," 2012/11/15 00:00:00 ","2012/11/16 00:00:00 ", "2012/11/19 00:00:00 ","2012/11/30 00:00:00 "), class ="factor ") –

+0

아래의 코멘트를 참조하십시오 요인에 대한 내 대답 ... –

답변

3

가 문자열을 경우는,

mystr <- c("2012/11/16 00:00:00"," ","") 
mystr[grepl("^ *$",mystr)] <- NA 
as.Date(mystr) 

일 같은 간단한합니까? 정규 표현식 "^ *$"은 문자열 시작 부분 (^), 0 개 이상의 공백 (*), 문자열 끝 부분 ($)으로 구성된 문자열을 찾습니다. 일반적으로 "^[[:space:]]*$"을 사용하여 다른 종류를 캡처 할 수 있다고 생각합니다.

+0

지금 시도하십시오. –

+0

인자에주의해야한다.'as.character()'를 먼저 쓰고 싶을 수도있다.'grepl'가 이상하게 작동 할 수도있다. –

+0

그것은 이상한가? R은 read.csv()를 사용하여 데이터를 읽을 때 모든 요소를 ​​기본값으로 설정합니다. grep이 효과가있는 것처럼 보입니다. 결과 출력을 거쳐야 제대로 작동합니다. –

0

더 나은 공백 (탭 등), 당신은 CSV 읽을 때는 NAS가 올바르게 삽입되어 :

read.csv(..., na.strings='') 

또는 NA로 읽어야 모든 값의 벡터를 지정합니다 .. .

read.csv(..., na.strings=c('',' ',' '))