【问题标题】:How can I get a percentages column when I aggregate a large dataset in SPSS?在 SPSS 中聚合大型数据集时,如何获得百分比列?
【发布时间】:2017-11-16 20:25:05
【问题描述】:

我在 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 excel syntax aggregate spss


    【解决方案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 通过将Qty_sum 除以Qty_sum_col1 创建Col2fraction,得到所需的分数。

    【讨论】:

    • 您能否简要说明一下语法将如何处理数据?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2019-01-08
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多