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

How can I get a percentages column when I aggregate a large dataset in 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 中数据的记录方式不一致,我无法对整个数据集使用通用公式。

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

我尝试在 Crosstabs 函数中使用 Row Percentages 选项,但这仅适用于获取两行分类变量的计数。

而不是 SPSS,请让我知道这是否也可以在 R 中完成。

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

在 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,其中包含 col_1 的每个值的 Qty 的总和。以下 compute 通过将 Qty_sum 除以 Qty_sum_col1 创建 Col2fraction,得到想要的分数。