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

我在SPSS中有一个很大的数据集,如下所示:

Col_1 Col_2 Qty ax 5 ax 5 ay 2 bx 1 by 6 by 7 cy 4 cz 10 cz 11 dx 2 

使用以下语法聚合数据集:

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

这是我得到的结果:

 Col_1 Col_2 Qty_sum ax 10 ay 2 bx 1 by 13 cy 4 cz 21 dx 2 

除此之外,我想要结果给我一个百分比如下:

 Col_1 Col_2 Qty_sum Percent ax 10 83% ay 2 17% bx 1 7% by 13 93% cy 4 16% cz 21 84% dx 2 100% 

Percent列的百分比显示了如何将Qty_sumQty_sum中的值。

由于Col_1Col_2中的数据logging方式没有一致性,因此我无法使用整个数据集的通用公式。

我无法使用Sumifs函数在Excel工作,因为Excel的数据集太大。

我尝试使用Crosstabs函数中的“ Row Percentages选项,但该函数仅用于在两行分类variables之间进行计数。

如果这可以在R完成,请告诉我,而不是SPSS

在SPSS中,执行此操作:

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

aggregate命令将添加一个新variablesQty_sum_col1 ,其中将包含每个col_1值的总和。 以下compute通过将Qty_sum除以Qty_sum compute创buildCol2fraction ,从而得到所需的分数。

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