
SAS應(yīng)用:都是小數(shù)點惹的禍
今天有人用了兩種方法通過分組求平均數(shù)問題,發(fā)現(xiàn)結(jié)果不一樣。為了說明問題,我自己簡單地造了些數(shù)據(jù),如下:
data dup;
input id date field value ;
cards;
1 2 0.0001 10
1 2 0.0001 10
1 2 0.00001 10
1 2 0.00001000001 10
1 3 0.00001 10
1 3 0.00001 10
1 3 0.00003 10
1 3 0.00003 10
1 3 0.00003 10
;
run;
proc sql;
create table NoDup1 as
select unique id, date, field, avg(value) as value from Dup group by id, date, field;
quit; ;
*method 2;
proc means data = Dup nway ;
class id date field;
var value;
output out = NoDup2(drop = _type_ _freq_) mean = value;
run;
初一看來,好像代碼沒什么問題,應(yīng)該結(jié)果一致,然而結(jié)果運行后,用sql得到的結(jié)果與proc步不一樣,這是為什么? 似乎這是SAS的錯誤,哈哈這個多么偉大的一個發(fā)現(xiàn)啊! SAS可以說是總多行業(yè)里面的標準,竟然也會錯。 其實這不是第一次發(fā)現(xiàn)這類問題。 以前也遇到過同樣的一個問題,就是:
data ex;
do i= 0.05 to 0.15 by 0.01;
if i=0.1 then output;
end;
run;
這個代碼運行后,ex數(shù)據(jù)集是空的,是不是SAS出錯了。后來發(fā)現(xiàn)這是由于計算機存儲小數(shù)的浮點問題,循環(huán)5次后,i應(yīng)該等于0.1,實際上非常接近0.1,是個近似值,并不是等于0.1,因此并無數(shù)據(jù)輸出到ex里面。
那么回到上面的那個問題,根本原因是proc sql和proc mean步對數(shù)的小數(shù)點處理不同,proc mean考慮到小數(shù)點多于sql, 因此會導(dǎo)致nodup1比nodup2少一條觀察。下面我提供第三種解決此類問題的代碼,data步,也是商業(yè)大型數(shù)據(jù)的常用方法:
data nodup3;
set dup;
by id date field;
if first.field then do; num=0;mean=0;end;
num+1; mean+value;
if last.field then do; value=mean/num; drop num mean; output; end;
run;
這個也是和proc mean步結(jié)果是一樣的。
有時候也許不需要考慮沒必要的小數(shù)位,可以用函數(shù)round,int,ceil等,還有一種方法就是把需要分組和比較大小的非整數(shù)用format格式化一下。
一般來說,我如果發(fā)現(xiàn)SAS運行結(jié)果和我想的不一樣,可以歸結(jié)于兩點:1,自己的代碼有問題;2,小數(shù)點問題。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
用 SQL 生成逆向回滾 SQL:數(shù)據(jù)操作的 “后悔藥” 指南? 在數(shù)據(jù)庫操作中,誤刪數(shù)據(jù)、錯改字段或誤執(zhí)行批量更新等問題時有發(fā)生。 ...
2025-07-14如何考取數(shù)據(jù)分析師證書:以 CDA 為例? ? 在數(shù)字化浪潮席卷各行各業(yè)的當(dāng)下,數(shù)據(jù)分析師已然成為企業(yè)挖掘數(shù)據(jù)價值、驅(qū)動決策的 ...
2025-07-14t檢驗與Wilcoxon檢驗的選擇:何時用t.test,何時用wilcox.test? t 檢驗與 Wilcoxon 檢驗的選擇:何時用 t.test,何時用 wilcox. ...
2025-07-14AI 浪潮下的生存與進階: CDA數(shù)據(jù)分析師—開啟新時代職業(yè)生涯的鑰匙(深度研究報告、發(fā)展指導(dǎo)白皮書) 發(fā)布機構(gòu):CDA數(shù)據(jù)科 ...
2025-07-13LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07