雙set表整合出複雜的表(附有sas n

2021-07-05 09:21:46 字數 3022 閱讀 8644

雙set語句的特點:

1.每個set在記憶體中都開闢乙個指標,指向資料集,有先後順序。

2.一旦有乙個指標指向了檔案的結尾,則跳出迴圈。

3.雙set語句讀取資料集的記錄時,相當於retain語句,保留記錄值,直到下一條記錄覆蓋它為止。

以下附上code :

data kids_ids;

attrib id length=$5

dob informat=mmddyy10. format=mmddyy10.;

input id $ dob;

datalines;

c0402 07/15/2001

c1593 06/30/2003

c1374 04/23/2007

c3811 02/01/2009

c1901 03/18/2009

;;;proc print data=kids_ids;

title "kids_ids";

run;

data immunizations;

attrib id length=$5

type length=$10

sequence length=3

received informat=mmddyy10. format=mmddyy10.;

input id $ type $ sequence received;

datalines;

c3811 polio 1 04/01/2009

c0402 dtap  1 09/12/2001

c0402 polio 1 09/12/2001

c0402 dtap  2 11/16/2001

c0402 polio 2 11/16/2001

c0402 dtap  3 01/10/2002

c0402 polio 3 04/14/2002

c0402 cpox  1 07/30/2002

c0402 mmr 

1 07/30/2002

c0402 dtap  4 11/20/2002

c0402 cpox  2 04/15/2006

c0402 mmr 

2 04/15/2006

c0402 dtap  5 08/15/2006

c0402 polio 4 08/15/2006

c1593 dtap  1 09/05/2003

c1593 polio 1 09/05/2003

c1593 dtap  2 10/29/2003

c1593 polio 2 10/29/2003

c1593 dtap  3 01/03/2004

c1593 cpox  1 08/04/2004

c1593 mmr 

1 08/04/2004

c1593 dtap  4 10/20/2004

c1593 dtap  5 07/16/2008

c1593 polio 3 07/16/2008

c1593 cpox  2 08/23/2008

c1593 mmr 

2 08/23/2008

c1374 dtap  1 06/28/2007

c1374 polio 1 06/28/2007

c1374 dtap  2 08/22/2007

c1374 polio 2 08/22/2007

c1374 dtap  3 10/20/2007

c1374 polio 3 01/22/2008

c1374 cpox  1 05/03/2008

c1374 mmr 

1 05/03/2008

c0054 dtap  1 07/01/2000

c0054 polio 1 07/01/2000

;;;;

proc datasets library=work;

modify immunizations;

index create id;

run;

quit;

proc print data=immunizations;

title "immunizations";

run;

data dtap_kids;

set kids_ids;

array allshots dtap_date1-dtap_date5;

format dtap_date1-dtap_date5 mmddyy10.;

drop sequence received type;

do until (_iorc_=%sysrc(_dsenom));

set immunizations key=id;

select (_iorc_);

when(%sysrc(_sok)) do;

if type='dtap' then do;

if 1 <= sequence <= 5 then allshots=received;

else putlog 'error: dtap_date cannot be updated. value of sequence is not 1-5.'/

id= sequence= received=;

end;

end;

when (%sysrc(_dsenom)) do;

if allshots ne . then output;

_error_=0;

end;

otherwise do;

putlog "error: unexpected error _iorc_=" _iorc_;

stop;

end;

end;

end;

run;

proc print data=dtap_kids;

title "example 3.13 dtap_kids data set created with data step";

run;

(以上**由sas官網拷貝非原創)

得到的:

雙表聯查mysql MySQL的雙表多表聯查

最近在做ec mall的二次開發,遇到這麼乙個需求,將掛件單獨顯示成乙個頁面。由於ec mall的掛件是用資料模組 模組類庫的方式進行的,就是使用類似smarty的形式。而單獨乙個頁面的話,資料讀取需要自己寫sql語句。現在的問題是,需要將商品中的汽車類中的推薦 最近在做ec mall的二次開發,遇...

鍊錶 複雜鍊錶的複製

問題描述 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個next指標指向下乙個結點之外,還有乙個random指向鍊錶中的任意結點或者null。結點的定義如下 struct randomlistnod...

雙雜湊和再雜湊暨雜湊表總結(附理解)

先說明一下,她們兩個屬於不同的範疇,雙雜湊屬於開放定址法,仍是一種解決衝突的策略。而再雜湊是為了解決插入操作執行時間過長 插入失敗問題的策略。簡而言之,她們的區別在於 前者讓雜湊表做的 對 把衝突元素按規則安排到合理位置 後者讓雜湊表具有了可擴充性,可以動態調整 不用擔心填滿了怎麼辦 我們來考察最後...