Archived posts in ' "SAS"

Back home

R에서 SAS의 영구파일 sas7bdat 이용하기

2011/07/27

최근 R package가 통계 분석에 많이 사용된다고는 하지만, 기업에서는 SAS나 SPSS를 더 많이 사용하는 것으로 알고 있습니다. 저도 대학이나 연구기관의 의뢰에는 R를 사용하지만, 기업의 데이터 분석에는 SAS를 이용합니다.

간혹 클라이언트로부터 받은 데이터가 SAS의 영구 파일형식인 sas7bdat일 때가 있습니다. 분석할 때 아무래도 손에 익은 R을 선호하게 되는데 SAS를 사용할 수 있는 환경에 있으면 데이터를 일반 ASCII 파일로 변환하여 사용하면 되지만 SAS를 사용할 수 없는 환경에 있을 때도 있습니다.

물론 R에서 SAS 형식의 데이터를 불러오는 함수 read.ssd()가 있긴 하지만, 이도 시스템에 SAS가 설치되어 있어야만 이용할 수 있어서 이래저래 불편했었습니다. 그런데 최근 sas7bdat라는 패키지가 공개되어 간단하게 이 형식의 데이터를 R에 불러올 수 있게 되었습니다.
계속 읽기 »

댓글 없음

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

2008/08/8

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

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

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

예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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] 복수의 문자변수의 값을 연결해 하나의 변수로 만드는 방법

2008/08/7

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

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

1
2
3
4
5
6
7
8
9
10
DATA _NULL_;
   dlm=",";
   char1="Hong";
   char2="GilDong";
   char3="15";
   char4="A";
   results=CATX(dlm, OF char1-char4);
 
   PUT results;
RUN;

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

댓글 없음