确定具有多个ID和频率列的数字ID的总频率

问题描述 投票:1回答:2

我为这个令人困惑的标题道歉,我添加了一个例子来澄清。我相信这其实很简单,但我不能为我的生活决定如何去做。基本上我有很长的ID列表及其相应的频率,大约45个列表都很长。我想确定每个ID的总频率,但问题是每个ID都不在每个列表中。我尝试将数据导入访问,但操作过于复杂,导致访问错误。

如果If语句有一些离散数量的ID,我可以在SPSS中执行此操作,但总共有大约10,000个ID需要快速执行此操作。

数据看起来像这样,有50个带有相关频率列的ID代码列。

ID CODE  Frequency  ID CODE     Frequency 
0001         3        0002          3
0002         4        0003          4
0003         2

预期产出

ID CODE  Frequency  ID CODE     Frequency    Final ID Code  Total Frequency
0001         3        0002          3          0001                 3
0002         4        0003          4          0002                 7
0003         2                                 0003                 6

我认为vlookup可以实现这一点,但我不确定如何解决这个问题。

我为这个基本问题道歉,期待任何意见,并将提供任何答案和澄清。

excel spss
2个回答
2
投票

在SPSS中,计算总频率很容易。将文件读入SPSS后,运行以下语法: (这假设变量名称将以这种方式自动更改:IDCODE频率IDCODE_A Frequency_A IDCODE_B Frequency_B etc')

varstocases /make FinalID from IDCODE IDCODE_A IDCODE_B
            /make fr   from Frequency Frequency_A Frequency_B.
dataset name orig.
dataset declare summary.
aggregate /outfile=summary /break=FinalID /TotalFreq=sum(fr).

原始数据现在将以长格式组织,更易于分析。汇总的频率将出现在名为“摘要”的新数据集中。

如果文件中有更多数据列,则将所有变量名放在语法中可能会很麻烦。您可以通过在变量视图窗口中按名称对变量进行排序并从那里复制它们来缩短过程。 但是,如果您要重复此过程并且每次运行中可能有不同数量的变量,则应完全自动化该过程。你可以这样做:

spssinc select variables macroname="!ID" /properties pattern = "IDCODE*".
spssinc select variables macroname="!FRQ" /properties pattern = "Frequency*".

这些命令自动定义您现在可以使用的变量列表,如下所示:

varstocases /make FinalID from !ID
            /make fr from !FRQ.

1
投票

尝试使用SUMIFS功能。这是我在单元格F2中的内容:

    `=SUMIFS($B$2:$B$4,$A$2:$A$4,E2) + SUMIFS($D$2:$D$4,$C$2:$C$4,E2)`

然后我将其复制到下面的单元格中。 E2在第2个数据行中变为E3,然后E4在第3个数据行中。

希望这个例子能让你了解它是如何工作的。您可能需要进行一些调整以考虑更多行,如果您没有像我这样的A-F列。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.