Archive

Posts Tagged ‘SAS’

[SAS] 숫자가 포함된 문자열의 정렬

August 8th, 2008

Q. 다음과 같은 데이터셋이 존재한다고 했을 때, 문자열변수 안의 숫자의 크기순으로 정렬하고 싶지만, 이대로 PROC SORT를 이용하면 A-1, A-10, A-12, A-2의 순으로 정렬됩니다. 문자열 안의 숫자의 크기 순으로 정렬하는 방법은 없나요?

Picture 1.png

A. 정렬을 하기 전에 id 변수의 숫자의 앞에 0을 추가할 필요가 있습니다. 0을 추가하려면 다음과 같은 과정이 필요합니다.

  1. scan 함수를 이용하여 변수를 “-” 문자를 기준으로 분리
  2. Zw.d 포맷을 이용하여 수치 문자열의 앞에 0을 추가
  3. CATX함수를 이용하여 전후의 공백을 없애고 분할할 문자열을 연결

예)

DATA test;
INPUT id $ age $ @@;
DATALINES;
A-1 10 A-2 15 A-3 9 A-5 5 A-8 6 A-9 3 A-10 12 A-12 7
B-3 9 B-5 3 B-8 4 B-9 6 B-11 7 B-15 10
;

DATA test2;
FORMAT id3 age;
SET test;

ID1 = SCAN(id,1,'-');
ID2 = PUT(INPUT(SCAN(id, 2, '-'),best.),Z2.);
ID3 = CATX('-', id1, id2);
RUN;

PROC SORT DATA=test2(KEEP = id3 age);
BY id3;
RUN;

SAS ,

[SAS] 복수의 문자변수의 값을 연결해 하나의 변수로 만드는 방법

August 7th, 2008

Q. 복수의 문자변수 값을 컴마(,)로 연결해 하나의 변수로 만드는 방법은?

A. SAS 9 부터 추가된 CATX 함수를 이용하면 구분문자를 지정하여 문자열로 만들 수 있습니다.

DATA _NULL_;
   dlm=",";
   char1="Hong";
   char2="GilDong";
   char3="15";
   char4="A";
   results=CATX(dlm, OF char1-char4);

   PUT results;
RUN;

출력결과 : Hong,GilDong,15,A

SAS ,