如何在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_sum
到Qty_sum
中的值。
由于Col_1
和Col_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))