Archive for November, 2008

SAS w roli auto emailera

Saturday, November 29th, 2008 | SAS | No Comments

Dystrybucja raportów, zobacz jak wysłać e-mail bezpośrednio z %makra w SAS, czyli jedna z możliwiśco oferowanych przez ODS (Output Delivery System) SAS.

http://www2.sas.com/proceedings/sugi29/039-29.pdf

Tags: , ,

Gdzie zapisać %macro SAS

Friday, November 28th, 2008 | SAS | No Comments

Pierwsze kroki programowania w świecie SAS muszą doprowadzić do miejsca w którym zastanawiasz się w jaki sposób zapisać swoje %macro, tak aby było dostępne w dowolnym projekcie, bez potrzeby kopiowania i kompilowania kodu. Zaraz potem pojawia się myśl że fajnie by było współdzielić kawałki kodu ze współpracownikami.

Na szczęście szlaki zostały już przetarte, w internecie łatwo odnajdziemy opracowania tego i podobnych tematów. Tutaj krótko artykuły które dla mnie okazały się szczególnie pomocne.

Building and Using Macro Libraries

Autor ogólnie omawia temat budowania biblioteki makr oraz przedstawia trzy sposoby zapisywania i wywoływania makr (%include, Autocall, oraz funkcję Compiled Stored Macros).

W większości przypadków optymalnym wyborem będzie wykorzystanie funkcji Compiled Stored Macros. Szczegółowy, przyjazny opis jak używać tej funkcji znajdziemy w artykule poniżej.

A Practical Approach to the Stored Compiled Macro Facility…

Krótko pisząc definiujemy katalog w którym chcemy przechowywać nasze makra poleceniem libname, uruchamiamy opcję systemową sas MSTORED oraz ustawiamy jej atrybut SASMSTORE. Następnie dodajemy do definicji naszego makra opcję STORE. W efekcie makro zostanie skompilowane i zapisane do wybranego katalogu. Proc Catalog; umożliwia nam przegląd zgromadzony makr. Aby zachować możliwość korzystania z utworzonej biblioteki makr po uruchomieniu nowej sesji SAS musimy dodać dwie linijki do pliku autoexec.sas, to jest zdefiniować katalog oraz włączyć opcję MSTORED. Poniżej przykładowy kod, a na końcu link przydatny dla użytkowników Enterprise Guide.

libname macrolib ‘ N:\SAS programs\macro_library ‘;
options mstored sasmstore=macrolib;

%macro macro_name (parameters) / STORE SOURCE DES=”description”;
.
.
macro program code
.
.
%mend macro_name;

PROC CATALOG catalog=macrolib.sasmacr;
contents;
Quit;

http://www.sas.com/offices/europe/poland/services/support/faq_eg.html#2

Makra - wprowadzenie

Thursday, November 27th, 2008 | SAS | No Comments

Przyjazne wprowadzenie do tworzenia makr w SAS :)

http://www.ats.ucla.edu/stat/sas/library/nesug99/bt108.pdf

Tags: ,

By dane z Data Step’u zapisać do zmiennej

Wednesday, November 26th, 2008 | SAS | No Comments

:)

http://www2.sas.com/proceedings/forum2007/050-2007.pdf

%macro doit;
%let id=%sysfunc(open(moja_tabelka));
%let NObs=%sysfunc(attrn(&id,NOBS));
%syscall set(id);
%do i=1 %to &NObs;
%let rc=%sysfunc(fetchobs(&id,&i));

%* —- Analysis Code Goes Here —– *;
%put &zmienna_1;
%put &zmienna_2;

%end;
%let id=sysfunc(close(&id));
%mend;

http://www2.sas.com/proceedings/sugi31/107-31.pdf

LAG RETAIN itp

Thursday, November 20th, 2008 | SAS | No Comments

Kiedy funkcja LAG działa inaczej niż oczekiwalismy:

http://changchung.com/download/retainLagLeadInterleave_draft.pdf

;)

Tags:

Poprawność numeru PESEL w SQL

Wednesday, November 19th, 2008 | Data Mining | No Comments

Algorytm znalazłem na stronie:
http://wipos.p.lodz.pl/zylla/ut/pesel.html

W pierwszym kroku tworzę tabelę tymczasową zapisując w kolumnach kolejne cyfry numeru pesel,

W drugim kroku tworzę tabelę z listą numerów oraz wynikiem testu.

proc sql;
create table pesele_temp as select
id,
pesel,
input(substr(trim(pesel),1,1),commax1.) as a1,
input(substr(trim(pesel),2,1),commax1.) as a2,
input(substr(trim(pesel),3,1),commax1.) as a3,
input(substr(trim(pesel),4,1),commax1.) as a4,
input(substr(trim(pesel),5,1),commax1.) as a5,
input(substr(trim(pesel),6,1),commax1.) as a6,
input(substr(trim(pesel),7,1),commax1.) as a7,
input(substr(trim(pesel),8,1),commax1.) as a8,
input(substr(trim(pesel),9,1),commax1.) as a9,
input(substr(trim(pesel),10,1),commax1.) as a10,
input(substr(trim(pesel),11,1),commax1.) as a11
from tabela
;quit;

proc sql;
create table pesele_v as select
id,
pesel,
ifn (mod( a1 * 9 +
a2 * 7 +
a3 * 3 +
a4 * 1 +
a5 * 9 +
a6 * 7 +
a7 * 3 +
a8 * 1 +
a9 * 9 +
a10* 7
,10)=a11, 1, 0) as TEST
from pesele_temp
;quit;

Tags: ,

Informacje o tabelach

Wednesday, November 12th, 2008 | SAS | No Comments

Enjoy ;)

http://www2.sas.com/proceedings/sugi31/259-31.pdf

PROC SQL;
SELECT *
FROM dictionary.members;
QUIT;

Select * from dictionary.dictionaries;

Tags:

Search