2017-06-14 5 views
1

次のように私はSPSSに大きなデータセットを持っている:SPSSで大きなデータセットを集計すると、パーセンテージ列はどのように得られますか?

Col_1 Col_2 Qty 
a   x  5 
a   x  5 
a   y  2 
b   x  1 
b   y  6 
b   y  7 
c   y  4 
c   z  10 
c   z  11 
d   x  2 

私はデータセットを集約し、次の構文を使用:で

Col_1 Col_2 Qty_sum 
a   x 10 
a   y 2 
b   x 1 
b   y 13 
c   y 4 
c   z 21 
d   x 2 

:これは私が得る結果である

AGGREGATE 
    /OUTFILE='agg' 
    /PRESORTED 
    /BREAK=Col_1 Col_2 
    /Qty_sum=SUM(Qty). 

をこれに加えて、次のような結果が得られます:

Col_1 Col_2 Qty_sum Percent 
a   x 10  83% 
a   y 2   17% 
b   x 1   7% 
b   y 13  93% 
c   y 4   16% 
c   z 21  84% 
d   x 2   100% 

の列には、の値を超えてQty_sumがどのように拡散しているかを示すパーセンテージがあります。

Col_1Col_2のデータが一貫しているわけではないため、データセット全体では一般的な公式を使用できません。

Excelではデータセットが大きすぎるため、Sumifs関数を使用すると、私はExcelで作業できません。

Crosstabs関数でRow Percentagesオプションを使用しようとしましたが、これはカテゴリ変数の2つの行にまたがるカウントを取得するためだけに機能します。

SPSSの代わりに、これがRでも実行できるかどうかお知らせください。

答えて

1

を、次の操作を行います。

AGGREGATE /OUTFILE=* mode=addvariables /BREAK=Col_1 /Qty_sum_col1=SUM(Qty_sum). 
compute Col2fraction=Qty_sum/Qty_sum_col1. 

aggregateコマンドはQtyの合計を含む新しい変数Qty_sum_col1が追加されますcol_1のすべての値に対して以下のcomputeは、Qty_sumQty_sum_col1で割ることによってCol2fractionを生成し、所望の画分をもたらす。

+0

構文でデータを処理する方法について簡単に説明してください。 –

1

Rについて、あなたはdplyrパッケージを使用することができます:SPSSでは

library(dplyr)  

DF <- data.frame(
    Col_1 = c("a", "a", "a", "b", "b", "b", "c", "c", "c", "d"), 
    Col_2 = c("x", "x", "y", "x", "y", "y", "y", "z", "z", "x"), 
    Qty = c( 5, 5, 2, 1, 6, 7, 4, 10, 11, 2) 
) 

result <- DF %>% 
    group_by(Col_1, Col_2) %>% 
    summarise(Qty_Sum = sum(Qty)) %>% 
    group_by(Col_1) %>% 
    mutate(Percent = Qty_Sum/sum(Qty_Sum)) 
関連する問題