2015-04-23 387 views
0

我有7個變量,489個變量值爲0-4的觀測值。 我需要的是使用的計數百分比。 答案0,1代表不使用,答案2,3,4代表使用。 我創建了7個額外的變量,並將以上所有值都變爲: 1 =使用率 - 0 =不使用。 現在,我不知道如何計算並提出我多少個「1」爲每個變種和489計算出現值的次數

data LAB7; 
    set LAB3; 
    array v{*} v21-v27; 
    array VU{7}; 
    DO i=1 to dim(v); 
    if v[i] = 1|0 THEN VU[i]=0; 
    else VU[i]=1; 
    END; 
    run; 
+0

在這裏,proc freq可能會更好。你應該發佈你的數據的樣子和你在做什麼。一個循環可能不會在這裏工作,因爲循環通常只在一行上起作用。你當然可以修改這個行爲,但它比proc freq更多的工作。 – Reeza

回答

3

把它你可以這樣做:

data usage; 
    set lab3 end=eof; 

    array v{*} v21-v27 
    array n{7}; 

    retain n: 0; 

    do i = 1 to dim(v); 
     if v[i] in (2, 3, 4) then n[i] + 1; 
    end; 

    if eof then do j = 1 to dim(v); 
     variable = vname(v[j]); 
     pct_usage = 100 * n[j]/_n_; 
     output; 
    end; 

    keep variable pct_usage; 
run; 

這將創建一個計數器陣列,每個變量一個,只要相應的變量等於2,3或4,就會增加一個。

在數據步驟結束時,我們輸出每個變量的記錄並記錄百分比作爲計數器除以觀察次數(_n_eof爲真)。

另一種方法是使用proc freq

data indicators; 
    set lab3; 
    array v{*} v21-v27; 
    array ind{7}; 
    do i = 1 to dim(v); 
     ind[i] = (v[i] in (2, 3, 4)); 
    end; 
run; 

proc freq data = indicators; 
    tables ind:/out = usage; 
run; 

這會創建二進制指示符變量,每個輸入變量一個,當輸入爲2,3或4時爲1,否則爲0。然後使用proc freq獲得計數和百分比。

+0

確切!沒有必要重新發明輪子。 PROC FREQ是一種最佳實踐和走向。 – Salva