2014-12-29 1 views
0

문자열 변수에서 마지막 두 숫자 값만 추출하여 새 변수에 할당하려고합니다. 첫째, 아래 코드를 사용하여 문자열에서 모든 숫자 값을 추출한 다음 새 변수에 할당했지만 궁극적으로 마지막 두 숫자 값만 추출하려고합니다. 이렇게하려면 더 좋은 방법이 있습니다.SAS의 문자열 변수에서 마지막 두 숫자 값만 추출하려고합니다.

UI_DUM = input(compress(Prod_Desc,,"kd"),best.); 

또 하나의 질문은 SAS에서 일부 수동 작업을 수행하기위한 임시 변수를 할당하는 방법입니다.

+1

예를 들려 주시겠습니까? – NEOmen

+1

substr 함수가 문자열 인 경우. 원본 데이터의 모양과 출력물이 어떻게 보이는지 게시해야합니다. – Reeza

답변

1

다음은 코드입니다. 문자를 삭제하고 숫자 만 유지하면됩니다. 변수 "temp1"(아래 코드에서)도 동일하게 수행됩니다. 두 번째 단계에서는 length 함수를 사용하여 현재 숫자 만 포함 된 문자열의 총 길이를 계산합니다. 세 번째 단계에서는 substr 함수를 사용하여 마지막 두 자리를 추출합니다. 한 문장으로 처리하려면 "최종"변수가 답입니다.


  • LENGTH 기능 - 후행 공백을 제외하고, 공백이 아닌 문자열의 길이를 반환하고, "kd"옵션을 빈 문자열 1
  • compress 기능을 반환 - 유지할 것 유일한 자릿수.

    COMPRESS (<, 문자> <, 개질제>)

    수정 - 각 비어 있지 않은 문자가 압축 함수의 동작을 수정하는 문자 상수, 변수 또는 표현을 지정한다. 공백은 무시됩니다. 다음 문자를 수정 자로 사용할 수 있습니다.

    d 또는 D는 자릿수를 문자 목록에 추가합니다.

    K 또는 K 그들에게

  • substr 기능을 제거하는 대신에리스트에 문자를 유지는 - SUBSTR (캐릭터 위치 < 길이>)


- 인수로부터 문자열을 추출
data _null_; 
Test_string="ada13117a1w11da1286s"; 
temp1=compress(Test_string, , 'kd'); 
temp2=length(temp1); 
temp3=substr(temp1,temp2-1,2); 
final=substr(compress(Test_string, , 'kd'),length(compress(temp1))-1,2); 
put _all_; 
run; 

임시 변수는 SAS에 없습니다. 변수 이름을 사용하고 아래의 마지막 데이터 세트에서 drop 문을 사용하십시오.

data test(drop = temp); /*Would work as the temp variable*/ 
temp= 2*balance;/*just for example*/ 
/*use the temp in further calculations*/ 
run; 
+0

사실, 몇 가지 임시 변수가 있습니다.'_N_','_ERROR_' 및 FIRST/LAST 변수는 모두 임시 변수와 임시 배열입니다. 일부 poeple은 임시 변수에'_N_'을 사용하고 싶습니다. 그러나 내 자신의 데이터 단계 (DOW 루프 또는 유사)를 수행하지 않는 한 좀 지저분하다고 생각합니다. – Joe

+0

예, 당신 말이 맞습니다.하지만 OP 요구 사항을 이해할 때, 계산 된 숫자를 포함하려고합니다. 자동 변수를 사용할 수 있는지 확실하지 않습니다. – NEOmen

+0

나는 당신의 결과에 동의하지 않는다. 단지 진술의 정확성에 대해 논평한다. :) – Joe

0

다소 다른 의견 :

data want; 
    set have; 
    UI_DUM = input(compress(Prod_Desc,,"kd"),best.); 
    UI_DUM_last2 = mod(UI_DUM,100); 
run; 

당신은 물론 한 줄에있는 모든 것과 잘 할 수 있습니다. 이 함수는 숫자 모듈로 함수를 사용하여 마지막 2 자리를 제공합니다 (모듈로 100은 마지막 2 자리를 반환합니다).

+0

..clever :)하지만 수학적 조작을 할 때 나의 대답보다 조금 느리지는 않을 것이다. – NEOmen

관련 문제