2013-10-04 4 views
6

마침표 '를 읽습니다.' 문자 변수의 값으로 사용하지만 공백 값으로 읽습니다.SAS에서 문자 값으로 마침표 읽기

data output1; 
input @1 a $1. @2 b $1. @3 c $1.; 
datalines; 
!.. 
1.3 
; 
run; 

Output  Required 
------  -------- 
A B C  A B C 
!   ! . . 
1  3  1 . 3 

기간을 읽는 데 도움을주십시오.

답변

11

출력은 그래서 $1.는, 우선 정보 흐름 정의 변수 아이폰에 정의하고, 코드에 $1. 요청한 사용자의 경우 ($ w INFORMAT 사용되는 정보 흐름에 의해 결정되는데, 이것의 부작용이다).

$ char를 사용하십시오. 원하는 결과에 대한 정보를 제공하십시오. 문서에서

data output1; 
input @1 a $char1. @2 b $char1. @3 c $char1.; 
datalines; 
!.. 
1.3 
; 
run; 

:

$ INFORMAT 은 $ w w informat은 선행 공백을 트림하고 텍스트를 저장하기 전에 값을 왼쪽 정렬합니다. 또한 필드에 공백과 단일 마침표 만 있으면 $ w. 기간을 누락 된 값으로 해석하기 때문에 해당 기간을 공백으로 변환합니다. $ w. informat는 필드의 두 개 이상의 마침표를 문자 데이터로 취급합니다.

$ CHARw. informat $ CHARw. informat은 선행 및 후행 공백을 잘라내거나 값을 저장하기 전에 입력 데이터 필드의 단일 기간을 공백으로 변환하지 않습니다.

+1

이것은 엄청납니다! 많은 감사 – athresh

0

나는 왜 그것이 작동하지 않는지 즉시 알 수 없습니다. 그러나 왜 작동하지 않는지 알아내는 데 관심이 없지만 한 가지 원하는 것이 있다면 : 길이 $ 3의 변수 1 개로 읽으십시오. 다음 단계에서; substr을 사용하여 분할하십시오.

data output1; 
    length tmp $3; 
    input tmp; 
    datalines; 
     !.. 
     1.3 
    ; 
run; 
data output2 (drop=tmp); 
    length a $1; 
    length b $1; 
    length c $1; 

    set output1; 

    a=substr(tmp,1,1); 
    b=substr(tmp,2,1); 
    c=substr(tmp,3,1); 
run; 
+0

입력 해 주셔서 감사합니다. 그러나 나는 그것을 할 수없는 하나의 성격으로 읽어야한다. – athresh