当我在SPSS中聚合大型数据集时,如何获得百分比列?

时间:2017-06-14 15:28:26

标签: r excel syntax aggregate 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

使用以下语法汇总数据集:

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

这是我得到的结果:

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

除此之外,我希望结果给出一个百分比如下:

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%

Percent列的百分比显示Qty_sumCol_2中的值的分布情况。

由于Col_1Col_2中的数据记录方式不一致,因此我无法对整个数据集使用通用公式。

我无法使用Excel函数在Sumifs中工作,因为数据集对于Excel来说太大了。

我尝试使用Row Percentages函数中的Crosstabs选项,但这只能用于计算两行分类变量。

请告诉我是否可以在SPSS中完成,而不是R

2 个答案:

答案 0 :(得分:1)

对于R,您可以使用dplyr包:

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))

答案 1 :(得分:1)

在SPSS中,请执行以下操作:

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

aggregate命令将添加一个新变量Qty_sum_col1,其中包含Qty的每个值的总和col_1。以下compute通过将Col2fraction除以Qty_sum来创建Qty_sum_col1,从而产生所需的分数。