我在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_sum
在Col_2
中的值的分布情况。
由于Col_1
和Col_2
中的数据记录方式不一致,因此我无法对整个数据集使用通用公式。
我无法使用Excel
函数在Sumifs
中工作,因为数据集对于Excel
来说太大了。
我尝试使用Row Percentages
函数中的Crosstabs
选项,但这只能用于计算两行分类变量。
请告诉我是否可以在SPSS
中完成,而不是R
。
答案 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
,从而产生所需的分数。