在 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_sum
在 Col_2
中的值之间的分布情况。
由于 Col_1
和 Col_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
,得到想要的分数。
我在 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
中数据的记录方式不一致,我无法对整个数据集使用通用公式。
我无法使用 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
,得到想要的分数。