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