2015-01-14 2 views
0

SAS에 5 개의 Excel 파일을 가져 왔으며 원래 8/3/1989로 형식이 지정되고 03Aug1989 (DATE9.)로 포맷 된 일부 날짜가 있습니다. 이는 내가 정말로 원했던 것입니다. 그러나 1 파일에서 날짜를 DATE9로 변환하지 못했습니다. 로그를 읽을 때 $ CHAR10으로 읽혀집니다. DATE9로 다시 포맷하는 몇 가지 방법을 시도했지만 실패했습니다.SAS에서 날짜를 문자로 변경하지 못했습니다

  1. 모든 informat/format/input을 DATE9로 변경하려고했습니다. $ CHAR10 대신 실패했지만 결과는 모두 비어 있습니다 (.)
  2. 시도했습니다. DateNew = input (Date, DATE9.); 그러나 그것도 작동하지 않았다.

의견이 있으십니까?

감사합니다.

+0

http://stackoverflow.com/questions/22924104/how-to-specify-informat-when-importing-xlsx의 제안을 시도하고 참조하십시오 당신이에있을 곳이 있다면, 여기에 좋은 대체이다 도움이된다면. – Joe

답변

0

주석의 Joe 제안은 계획 A 여야합니다.하지만 때로는 기본 제공 SAS 형식 지정 옵션이 작동하지 않고 여전히 문자열로 끝납니다.

data test; 
format imported_date $char10.; 
imported_date = "8/3/1989"; 

month = scan(imported_date, 1, "/")*1; 
day = scan(imported_date, 2, "/")*1; 
year = scan(imported_date, 3, "/")*1; 

date_datefmt = mdy(month,day,year); 
format date_datefmt date9.; 
run; 
+1

'input (imported_date, mmddyy10.)'을 사용하지 않는 이유는 무엇입니까? 그리고 왜 자동 숫자 변환을 사용하고 있습니까? 입력을 다시 사용하십시오. – Joe

+0

내 사무실에있는 누군가가 어제 OP의 질문을 어제 물어 보았습니다. 그건 그에게 도움이되지 않았고, 그는 이미 많은 다른 날짜 형식으로 입력을 시도했다 (imported_date, mmddyy10.). Input()은 대부분의 가져온 파일에서 작동했지만 일부에서는 공백을 반환했습니다. 그래서 input() (다양한 날짜 형식 사용)은 그의 계획 A 였고, DBDSOPTS는 계획 B였습니다. "DBSASTYPE = (datevar = 'DATE')를 사용하여 libname/data-step으로 가져 오는 것은 그의 계획이었습니다 C. 실패했을 때 그는 내가 쓴 것을 기본적으로 안전하다고 생각하여 공유하고 싶다고 생각했습니다. –

+0

위의 코드는'input (... mmddyy10.)'이 작동하는 경우에만 작동합니다 (즉, 월/일/년인 경우에만 작동합니다). – Joe