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.
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
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;
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
![]()
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;
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;