'전체 글'에 해당되는 글 611건

  1. 2009.06.09 기대수익률을 낮추다 1 by cocon
  2. 2009.06.09 SAS DATASET에서 FIRST, LAST, END 옵션의 활용법 by cocon
  3. 2009.06.09 sas 문자함수 3 by cocon
  4. 2009.06.09 sas format문 by cocon
  5. 2009.06.09 sas array문 사용 by cocon

기대수익률을 낮추고 기다리니 지치고, 아예 신경 안쓰고 안기다리려니 점점 삶의 질이 올라가는 역설적 상황이 벌어지네요.
다음달엔 윤상 콘서트에 가기로 했습니다. 제 20대,서태지와 신해철, 김현철과 윤상, 그리고 김광석이 제 귀를 사로잡았었지요.
언젠가 문득 제가 투자를 통해서 돈을 벌려고 하는게 아니라 시간을 벌려고 하는 것이란 생각이 들었습니다.
김광석이 세상을 뜨고 군대 제대하면 언제라도 콘서트에 가서 들으리라 했던 그의 목소리를 들을 기회가 영원히 사라지더군요. 현재에 충실하기가 생각보다 쉽지 않습니다. 언제든 할 수 있다고 생각한 것들이 사실은 저를 기다려주지 않더라구요.
지금 쓰는 시간을 조금더 잘 쓰면 약간 적은 돈으로 더 알차게 시간을 보낼 수 있을것이란 생각이 들었습니다. 인생에서 우선순위 정하는 법이란 글은 그렇게 나왔죠.
때문에 가면 갈수록 시간을 쏟아붓는 투자에선 멀어집니다. 투입시간대 산출시간이 더 길어지는 시점에서는 입장이 분명 바뀌겠죠. 제가 시간이 많아지면 아마 타인을 위해 쓰는 시간도 비례해서 늘어날 것 같습니다.
적게 휘두르고 정확하게 맞히는데 공을 들이게 되고.. 회전률이 확 떨어졌습니다.
시간이 많이 지나면 제가 투자에 미쳐서 살았던 5년이 아스라한 꿈처럼 남을지도 모르겠습니다.

저는 제 인생이란 만기가 불확실한 시간에 대한 투자를 정말 심각하게 고민하기 시작했습니다. 아마 그 해답은 죽을때까지 먹고 살만큼 벌면 별 문제가 없다는 정도에서 수렴되지 않을까 싶네요. 그 이상 벌게 되면 그것은 신이 제게 내린 덤으로 여기면 되지 않을까.. 실력은 개뿔.. 다 운이란 이야기죠. 

반응형
Posted by cocon
  • FIRST, LAST, END 옵션의 활용법

 

   Practice

Will Data steps require BY or END= variables?

   설  명

DATA STEP 에서 사용되는 FIRST.변수명, LAST.변수명, END 옵션의 활용법에 대해서

알아보겠습니다.

 

일반적으로 FIRST.변수명, LAST.변수명과 END 옵션은 실무에 상당히 많이 쓰이는 것들

중에 하나입니다.

FIRST.변수명, LAST.변수명은 BY문장(BY로 정의된 변수는 반드시 정렬)으로 선언된 변수의 Grouping 값의 처음(FIRST)과 마지막(LAST) 값을 구분해 줍니다.

 

END 옵션은 데이터셋의 옵져베이션이 마지막일 경우 사용합니다.

FIRST.변수명, LAST.변수명과 END 옵션을 통해 지정된 변수는 임시변수로써 최종 데이터셋 으로 만들어지는 변수는 아닙니다.

 

보다 더 자세한 사항은 문장을 통해서 익히도록 하겠습니다.

  프로그램

 

               구문

                 설명

DATA subtotal;

 

    SET country end=E;

    BY state;

    WHERE amount < 10;

 

    IF first.state THEN total = 0;

    total + amount;

 

    IF last.state;

    n+1;

 

     /* 마지막 옵져베이션일경우 */

    IF E THEN

     PUT 'THERE WERE ' N  'STATES';

 

RUN;

 

**Syntax : end=(사용자정의변수) : 데이터셋의 마지막 옵져베이션일 경우 1의 값이 셋팅됩니다 (표참조)

**Syntax : first.변수명(BY변수) : BY로 선언된 변수의 Grouping 값이 처음일 경우 1의 값이 셋(표참조)

 

** Syntax : last.변수명(BY변수): BY로 선언된 변수의 Grouping 값이 마직막일 경우 1의 값이 셋팅 (표참조)

** 데이터셋 옵져베이션이 마지막일 경우 1의 값이 셋팅 (표참조)

 

결 과 : BY로 선언된 변수의 합계와 BY로 선언된 변수의 건수를 출력하는 프로그램입니다.

 

   표참조

** FIRST.변수명, LAST.변수명, END 옵션를 표로 설명.

FIRST.변수명과 LAST.변수명과 E 의 값이 0 or 1로 셋팅되는 것을 표로

설명했습니다.

 

 

STATE

AMOUNT

FIRST.STATE

LAST.STATE

E

CA

20

1

0

0

CA

5

0

0

0

CA

15

0

1

0

NY

30

1

0

0

NY

3

0

0

0

NY

12

0

1

1

 

 

** 파란색 : FIRST.변수명, 빨간색 : LAST.변수명, 녹색 : END옵션

 

 

 

반응형

'개발관련' 카테고리의 다른 글

[SAS] 두 DATASET비교하기 PROC COMPARE  (0) 2010.03.18
[SAS] 간단하게 여러 dataset을 한 파일로 출력하기  (0) 2010.02.11
sas 문자함수  (3) 2009.06.09
sas format문  (0) 2009.06.09
sas array문 사용  (0) 2009.06.09
Posted by cocon

sas 문자함수

개발관련 : 2009. 6. 9. 12:50

   함수 사용

 

Practice

SAS 문자함수

설명

문자함수의 활용법에 대해서 설명 드리도록 하겠습니다.

 

일반적으로 함수는 상당히 많이 사용하는 것 중에 하나입니다. 함수를 모르면 프로그램을 하기가 쉽지가 않죠. 이번에 설명드릴 함수는 문자함수에 대해서 설명을 드리도록 하겠습니다.

 

substr 함수

 

               함수사용

                 사용예

substr() – 해당 문자열의 필요한 부분값을 추출할 때 유용합니다.

 

결과)

Text

Var1

Var2

011-1234-567

1234

5678

 

/* 핸드폰 두 번째 or 마지막 정보 추출 */

DATA substr_test;

        text = '011-1234-5678';

        var1 = SUBSTR(text,5,4);

        var2 = SUBSTR (text,10);

RUN;

 

scan 함수

scan() - 단어를 자세히 조사합니다.

구분자를 쓰지 않았을 경우, default

Blank  .  <  (  +  &  !  $  *  )  ;  -  /  ,  %

 

결과)

Text

Var1

Var2

011 1234 5678

1234

5678

 

/* 구분자에 따라 두 번째 or

    마지막 정보 추출 */

DATA scan_test;

           text = '011-1234-5678';

           var1 = SCAN(text,2);

           var2 = SCAN(text,3);

RUN;

 

catt 함수

catt() - SAS 9 에서 새롭게 추가된 함수입니다.

두 변수의 문자뒤에 존재하는 공백을 제거하고 문자를 결합합니다.

 

결과)

Fullname

Trimname

ABC  DEF

ABCDEF

 

DATA test;

           length firstmi $7. lname $7.;

           firstmi = 'ABC   ';

           lname = 'DEF   ';

RUN;

 

DATA catt_test;

          set test;

        trimname = catt(firstmi, lname);

RUN;

 

find 함수

find() - SAS 9 에서 새롭게 추가된 함수입니다.특정 문자값의위치에대한 문자변수를 찾고 그것의 위치를 알려줍니다

 

결과)

Text

spos

result

She sells seashells?

    1

   1

 

DATA find_test;

     text='She sells seashells?';

     /* 검색하려는 문자의 시작위치 */

     spos=1;

     /* 세 번째 파라메터

       i : 대소문자 구별없이

       t : 공백무시 */

     result=find(text,'She','i',spos);

RUN;

compress

함수

compress() - COMPRESS 함수는 인수중에 특정한 문자열을 제거하거나 Blank를 제거할 수 있습니다.

아래의   예는 '@' 를 제거하는 예입니다.

 

결과)

Text

Comtext

111@333ff

111333ff

1445432@1

14454321

356642423

356642423

 

DATAcompress_testdata ;

          set test; /* 위의 데이터참조 */

          comtext=compress(text,'@');

RUN;

count 함수

count() – SAS 9 에서 새롭게 추가된 함수입니다. 찾으려고 하는 문자의 수가 리턴됩니다.

 

결과)

Text

CntText

ABCAEF

          2

 

DATA count_test;

      text='ABCAEF';

      cntText=count(Text,'A');

RUN;

 

 

 

 

반응형
Posted by cocon

sas format문

개발관련 : 2009. 6. 9. 12:48

Format 사용

우리가 일반적으로 프로그래밍을 할 때 IF 나 Case 문을 많이 사용을 하는데 Format 문을 알면 더 유용하고 효율적으로 사용이 가능합니다. SAS에서는 Format 문이 있습니다. Proc Format 은 필요에 따라 사용자가 Format&Informat 을 생성 할 수 있는 프로시져입니다

 

사용
 
               PROC FROMAT 설명                  사용예
 

  PROC
FORMAT
  LIBRARY = libref ;            INVALUE <$>name value-range-set(s) ;            VALUE <$>name value-range-set(s) ;  RUN
;  /* LIBRARY=libref : format 카탈로그가 저장된 libref 지정합니다 */  PROC
FORMAT
  LIBRARY = libref ;  /* INVALUE : Informat 생성을 위한 문장입니다  <$> : 문자일 경우 사용하고,          숫자일 경우 생략합니다value-range-set(s) : 값과 범위를 지정합니다 */  INVALUE <$>name value-range-set(s) ;     /* VALUE : format 생성을 위한 문장입니다  <$> : 문자일 경우 사용하고, 숫자일 경우 생략합니다value-range-set(s) : 값과 범위를 지정합니다 */      VALUE <$>name value-range-set(s) ;  RUN
; 
/* fmtsearch를 사용하지 않으면        sashelp라는 라이브러리에 생성된       포맷정보를 사용할 수 없습니다*/options fmtsearch = (sashelp);  PROC
FORMAT
  lib=sashelp;    VALUE agefmt              low-12
= '12세 이하'             13
- high ='13세 이상';  VALUE $sexfmt              'M'='남자'
             'F'='여자'
;  RUN
;  PROC FREQ
data=sashelp.class noprint;;     /* Freq 결과를데이터셋으로 볼수있음 */TABLE age/out=test_result;
FORMAT age agefmt.;  run
;  설명: Format 을 생성하여 Freq 프로시져를 사용하는 예입니다
(sashelp 라이브러리에 있는 formats 카탈로그에 있는 agefmt 와 sexfmt 엔트리를 확인해 보세요)
 

 

출처:sas korea 기술지원팀

반응형
Posted by cocon

sas array문 사용

개발관련 : 2009. 6. 9. 12:44

Array 문 사용

What is Array?

우리가 일반적으로 변수를 선언하는데 연속적으로 변수를 지정하고 반복적으로 변수를 이용하여 연산을 해야 하는 경우가 많으실 겁니다. 이때 Array 를 이용하시면 효율적으로 연산이 가능합니다.

ARRAY array-name{dimension} $ length elements (initial values) ;  

ARRAY :

-반복적인 계산 수행, 동일한 속성을 갖는 여러 변수 생성 등의 작업에서

  프로그램을 단순화 하기 위해 사용 할 수 있습니다.

-모든 문자형/숫자형의 Array 를 생성할 수 있습니다.

-여러 개의 값을 Array에 저장하여 사용할 수 있습니다.

-Array 의 Eliment 별로 다른 TYPE 을 지정할 수는 없습니다.

  (문자형이면 문자형, 숫자형이면 숫자형)

- DataStep 에서만 사용 가능합니다.

 

 

 

 

설명 : 위의 그림은 ARR_VAR 라는 Array 변수를 4개의 Elements 를 선언한 것에 대한 그림입니다. 자세한 사용법은 아래에 설명 드리겠습니다.

 

 

EMP_ID

QTR1

QTR2

QTR3

QTR4

A1334

3214

3232

3223

2122

A2345

2214

3232

3000

3122

A5433

3814

1932

1223

2522

A3223

3900

4332

3323

2722

A4324

3000

2332

4323

2822

A7654

2004

2000

4123

2922

 

 

데이터셋 구조는 사번(EMP_ID)과 각각의 분기별(QTR1-QTR4) 실적값으로 되어 있으며, 사번 별로 분기별 실적값을 1.25% 의 이율을 추가하고자 합니다.

(기존변수를 이용하여 새로운변수생성)

 

 

DATA array_sample(drop = i);

SET emp_qtr;

/* arr_var 의 4개의 element 로 선언하고, qtr1-qtr4 의 데이터셋의 변수값을 선언 */

ARRAY arr_var{4} qtr1-qtr4;

/* newqtr1-newqtr4 숫자형 변수 생성 */

ARRAY arr_new{4} newqtr1-newqtr4;

 

/* 4분기가 있으므로 4번의 Looping 을 실행함 */

DO i=1 to Dim(arr_var); 

    /* 분기별 실적값을 Array 로 저장하여 1.25의 이율을 연산 */

arr_new{i} = arr_var{i}*1.25;      

END;

RUN;

출처:SAS Korea 기술지원팀

반응형
Posted by cocon