最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

數(shù)據(jù)集快速排序 trick

2021-09-06 23:28 作者:陸震同學  | 我要投稿

馬不停蹄趕稿子。

問題

有如下數(shù)據(jù)集,需要固定其中 stat 列的順序,

啥意思?就是后面不管這個數(shù)據(jù)集如何排序,要保持,在各個 sex 中,stat 始終保持 N->Mean->std->Median->Minimum->Maximum 這樣的順序不變。

厘清思路

這里我們用到了 dow 循環(huán)來操作,對于這種由 proc means 確定的 stat 順序的 situation,dow 循環(huán)是再合適不過的了。

上 code,

data mean3;
? ?do _n_= 1 by 1 until(last.sex);
? ? ? ?set mean2;
? ? ? ?by cat sex var;
? ? ? ?ord= _n_;
? ? ? ?output;
? ?end;
run;

就是如此簡單。實際上,我們在 求和的七種方式 文章里提到過 dow 循環(huán)。

注意看過程,其中,當讀完第一個 by 變量組的全部觀測時,last.sex 判定 do until 循環(huán)終止,data step 的第一次迭代結束,進入 data step 的第二次迭代,do until 的 _n_ 又從 1 開始,直到 last.sex,依次類推。我們可以發(fā)現(xiàn),一次 data step 的循環(huán)迭代,讀取的就是 一個 by 變量組的全部觀測。

提問,這里的 do _n_ by until,你覺得起到什么作用?實際上,它壓縮了經(jīng)由 set 讀取數(shù)據(jù)時 data step 的循環(huán)迭代次數(shù)。為什么這么說?正常來講,

data mean3;
? ? ? ?set mean2;
? ? ? ?by cat sex var;
run;

這里,data step 需要迭代 18 次的,而由于 dow 循環(huán)控制了一次 data step 終止的條件,即,必須遇上 last.sex,該次 data step 的迭代才能終止,因而,data step 最終只需要迭代 3 次,即可讀入全部觀測,同時借助 _n_ 作為計數(shù)器,完成了行觀測順序的 assignment。

這種方式,實現(xiàn)了對數(shù)據(jù)讀取的更大程度的控制,非常推薦日常多多使用。

細節(jié)

肯定有人要問,如果開始的數(shù)據(jù)集 stat 列不是剛好我們要的順序怎么辦?

有人就想著利用 if then,進行順序的一個個賦值,當然是可行的,但是一旦 if condition 過多,寫起來也很麻煩,這里推薦的另外一個方式是 聊一聊貼標簽 labeling 這篇文章里提到的,借助 proc format,將 stat 生成數(shù)字 format,依據(jù)數(shù)字進行排序,同時若要對 stat 中的值改名,只需要再生成第二個字符串 format,后續(xù)進行轉 format 即可。


數(shù)據(jù)集快速排序 trick的評論 (共 條)

分享到微博請遵守國家法律
朝阳区| 黄梅县| 密山市| 喜德县| 铜梁县| 韶关市| 亳州市| 天镇县| 贺兰县| 内丘县| 合阳县| 达州市| 新野县| 黑山县| 高平市| 云龙县| 鄄城县| 故城县| 永胜县| 文登市| 晋州市| 城口县| 岳西县| 横山县| 龙口市| 乌鲁木齐市| 祁东县| 原平市| 新兴县| 通榆县| 平武县| 南城县| 永胜县| 水城县| 无极县| 乐陵市| 金阳县| 历史| 盱眙县| 枣阳市| 弥渡县|