2016-08-16 83 views
0

我創建了一個sas數據集的簡單子集,其中durrel_cyc = 1的單個條件會生成一組376個觀察值。但是,當我運行vdurrel_cyc的頻率時,有536個(未加權的)觀察值應該被選擇爲1。子集的SAS大小與預期頻率不匹配

我不確定我如何創建一個工作示例,因爲它顯然不合邏輯,而且我之前從未遇到過這種情況 - 而且我一直在使用SAS。

我真的不知道該怎麼做,這讓我發瘋。有沒有可能導致這種情況的命令?

我試過如下:1在數據組B

data a b ; 
set look ; 
if durrel_cyc = 1 then output a ; else output b ; 
run ; 

enter image description here

proc freq data=b ; 
tables durrel_cyc/missing ; 
run ; 

enter image description here

爲何仍有價值?

+0

有沒有辦法,這是行不通的。您確定此數據步驟和proc freq之間沒有步驟?你能提供數據樣本嗎? – fl0r3k

回答

4

你不會說durrel_cyc是如何創建的,所以有一種可能性是它是數值表示錯誤的犧牲品(網上有很多關於此的文章)。

試着把if round(durrel_cyc) = 1 then output a ; else output b ;看看是否能解決問題。

如果不工作,那麼只是檢查durrel_cyc沒有與之相關聯的自定義格式(proc freq將顯示格式的值,所以如果有一個顯示不同數量的1自定義格式,proc freq將顯示這作爲1)

+0

好點!我忘了這件事。 – fl0r3k

+0

謝謝基思。 Round()做的竅門,我讀了數值表示錯誤,因爲durrel_cyc是錯誤發生的各種其他變量的總和。讓我感到驚訝的是,總結整數只會產生這樣的錯誤。 – user2568648

+0

求和整數不會導致這個問題,所以我懷疑其中一個變量是從一些非整數派生的 – Longfish

相關問題