Data步中First.Var 和Last.Var的應(yīng)用

SAS數(shù)據(jù)集排序后骤视,對于每一個(gè)排序變量鞍爱,數(shù)據(jù)集自帶兩個(gè)臨時(shí)變量(Temporary Variable),F(xiàn)irst.Var专酗,Last.Var睹逃。這兩個(gè)臨時(shí)變量指示數(shù)據(jù)是否為組內(nèi)首行或尾行。我們來看個(gè)例子祷肯。

示例代碼
代碼結(jié)果

從結(jié)果中可以看到沉填,ONE數(shù)據(jù)集中按照SUBJECT排序后,F(xiàn)irst.subject=1表明記錄位于組內(nèi)首行佑笋;First.subject=0表明記錄不在組內(nèi)首行翼闹,Last.subject與前者類似。當(dāng)組內(nèi)只有一條觀測時(shí)蒋纬,這時(shí)候猎荠,F(xiàn)irst.subject和Last.subject同時(shí)為1。下面介紹一下蜀备,這兩個(gè)臨時(shí)變量的應(yīng)用关摇。

1.標(biāo)記陽性受試者

我們先創(chuàng)建一個(gè)測試數(shù)據(jù)集,這個(gè)數(shù)據(jù)集包含3個(gè)變量碾阁,patno(受試者編號)输虱、 visit_no(訪視編號)、 outcome(檢測結(jié)果)脂凶。

創(chuàng)建測試數(shù)據(jù)集
測試數(shù)據(jù)集

對于這樣結(jié)構(gòu)的數(shù)據(jù)悼瓮,我們想要找出有outcome=1記錄的受試者,如何實(shí)現(xiàn)呢艰猬?一種方法横堡,使用First./Last.。

First./Last.
輸出結(jié)果

數(shù)據(jù)集按照PATNO冠桃、VISIT_NO排序命贴,按照PATNO分組,新建一個(gè)FLAG變量來記錄是否為陽性結(jié)果食听。對于每一組胸蛛,首先將FLAG變量置空(if first.patno = 1 then flag = 0;); 當(dāng)遇到記錄讀到陽性數(shù)據(jù)時(shí),F(xiàn)LAG設(shè)為1(if outcome = 1 then flag = 1;樱报。因?yàn)檫@里的FLAG是Retain下來的葬项,所以當(dāng)FLAG設(shè)為1后,同一組內(nèi)的后續(xù)記錄為0后迹蛤,不會在進(jìn)行賦值民珍,一直保留為1襟士。當(dāng)讀到組內(nèi)最后一條記錄時(shí),將這條記錄輸出到數(shù)據(jù)集Flag_test中嚷量。這樣有"陽性結(jié)果"的患者就可以用FLAG=1來標(biāo)識了陋桂。

2.陽性記錄計(jì)數(shù)

上面的例子只是選出有陽性記錄的受試者編號,這樣無法知曉每個(gè)受試者具體的陽性記錄蝶溶。下面嗜历,我們實(shí)現(xiàn)組內(nèi)陽性記錄的計(jì)數(shù)。

陽性記錄計(jì)數(shù)
計(jì)數(shù)結(jié)果

首先抖所,在組內(nèi)首行將計(jì)數(shù)變量COUNT設(shè)為0梨州,每遇到陽性記錄計(jì)數(shù)就加1。count+1相當(dāng)于retain count 1; count = count +1田轧,當(dāng)遇到非陽性記錄時(shí)暴匠,條件語句不執(zhí)行,count值保留進(jìn)入下一行記錄的計(jì)算涯鲁,最后只保留組內(nèi)最后一條記錄。


***篩選陽性記錄;
data lab;
    input patno visit_no outcome;
    datalines;
    3 1 0
    3 2 0
    3 3 1
    1 1 0
    1 2 1
    1 3 0
    1 4 1
    2 1 0
    2 2 0
    4 1 1
    4 2 1
    4 3 1
    ;
run;

proc sort data=lab;
   by patno visit_no;
run;

data flag_test;
   set lab;
   by patno;

   retain flag; ***if flag = 1 outcome was positive;

   ***initialize flag;
   if first.patno = 1 then flag = 0;

   ***turn flag on if outcome is positive;
   if outcome = 1 then flag = 1;

   ***output one observation when processing the last visit for a patient;
   if last.patno = 1 then output;
   drop outcome visit_no;
run;

proc print data=flag_test;
   title "listing of data set flag_test";
run;

***計(jì)數(shù);
data count_test;
   set lab;
   by patno;

   ***initialize count;
   if first.patno = 1 then count = 0;

   ***increment count if outcome is positive;
   if outcome = 1 then count + 1;

   ***output one observation when processing the last visit for a patient;
   if last.patno = 1 then output;
   drop outcome;
run;

proc print data=count_test;
   title "listing of data set count_test";
run;


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末有序,一起剝皮案震驚了整個(gè)濱河市抹腿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旭寿,老刑警劉巖警绩,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盅称,居然都是意外死亡肩祥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門缩膝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來混狠,“玉大人,你說我怎么就攤上這事疾层〗龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵痛黎,是天一觀的道長予弧。 經(jīng)常有香客問我,道長湖饱,這世上最難降的妖魔是什么掖蛤? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮井厌,結(jié)果婚禮上蚓庭,老公的妹妹穿的比我還像新娘致讥。我一直安慰自己,他們只是感情好彪置,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布拄踪。 她就那樣靜靜地躺著,像睡著了一般拳魁。 火紅的嫁衣襯著肌膚如雪惶桐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天潘懊,我揣著相機(jī)與錄音姚糊,去河邊找鬼。 笑死授舟,一個(gè)胖子當(dāng)著我的面吹牛救恨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播释树,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肠槽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奢啥?” 一聲冷哼從身側(cè)響起秸仙,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桩盲,沒想到半個(gè)月后寂纪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赌结,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年捞蛋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柬姚。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拟杉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出量承,到底是詐尸還是另有隱情捣域,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布宴合,位于F島的核電站焕梅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卦洽。R本人自食惡果不足惜贞言,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阀蒂。 院中可真熱鬧该窗,春花似錦弟蚀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至规肴,卻和暖如春捶闸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拖刃。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工删壮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兑牡。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓央碟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親均函。 傳聞我的和親對象是個(gè)殘疾皇子亿虽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355