2017-01-12 1 views
0
Data test; 
x="20161"; 
run; 

"20161"(즉 'jan2016')을 문자로 사용하고 있는데, 이제 이것을 "jan2016"으로 표시하려고합니다. 어떻게해야합니까?변환 할 문자

+0

형식을 사용할 수 있습니다. 'PROC FORMAT'은 자신 만의 형식을 만들어 데이터가 어떻게 보이는지를 바꿀 수 있습니다 : http://www2.sas.com/proceedings/sugi30/001-30.pdf –

+0

당신이 신경 쓰면 어떻게 두자리 달이 나올까요? 그거? "201610"? – superfluous

답변

0

명확하게 말하면 문자열 변수로 시작하고 그 결과를 문자열 변수로 사용 하시겠습니까? 날짜가 더 쉽게 숫자로 조작되기 때문에 잠재적으로 제한적인 것으로 보입니다.

귀하의 요청에 따라 말하면, 제공된 문자열의 처음 4 문자를 구문 분석하여 연도로합니다. 그러면 나는 다른 모든 인물들을 그 달과 같이 대할 것입니다. MDY() 함수를 사용하여 day = 1이라고 가정하여 실제 날짜 (숫자 var)를 만듭니다.

우리는 숫자를 원하는 MONYY7의 문자열로 변환 할 수 있도록 PUT() 함수에 전달할 중간 숫자 변수를 제공합니다. 체재. 마지막 부분은 출력 문자열을 소문자로 만들려고하므로 LOWCASE() 함수에 최종 결과를 래핑합니다.

Data test; 
x="20161"; *the input; 
y = mdy(substr(x,5),1,substr(x,1,4)); *a temporary intermediate variable that's a date/numeric var; 
z = lowcase(put(y, MONYY7.)); *convert back to string in the desired format, and lowercase it; 
drop y; *no longer needed; 
run;