使用多个 ID 和频率列确定数字 ID 的总频率
Determining Total Frequency of a Numeric ID with Several ID and Frequency Columns
对于令人困惑的标题,我深表歉意,我添加了一个示例来澄清。我相信这实际上很容易,但我无法确定如何去做。基本上我有很长的 ID 列表及其相应的频率,大约 45 个列表都很长。我想确定每个 ID 的总频率,但问题是每个 ID 都不在每个列表中。我试过将数据导入access,但是操作过于复杂导致access出错。
如果 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 实现,但我不太确定该怎么做。
对于这个基本问题,我深表歉意,期待任何评论,并将提供任何答案和澄清。
尝试使用 SUMIFS 函数。这是我在单元格 F2 中的内容:
`=SUMIFS($B:$B,$A:$A,E2) + SUMIFS($D:$D,$C:$C,E2)`
然后我将它复制到下面的单元格中。 E2 在第 2 个数据行中变为 E3,然后 E4 在第 3 个数据行中。
希望这个例子能让您了解它是如何工作的。如果您没有像我一样的 A-F 列,您可能需要进行一些调整以考虑更多行。
在 SPSS 中计算总频率很容易。将文件读入SPSS后,运行语法如下:
(这假设变量名称将以这种方式自动更改:IDCODE Frequency 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).
原始数据现在将以长格式组织,这样更容易分析。汇总的频率将出现在名为 "summary".
的新数据集中
如果您的文件中有更多的数据列,将所有变量名都放在语法中可能会很麻烦。您可以通过在变量视图 window 中按名称对变量进行排序并从那里复制它们来缩短过程。
但是,如果您要重复该过程并且每个 运行 中可能有不同数量的变量,您应该完全自动化该过程。你可以这样做:
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.
对于令人困惑的标题,我深表歉意,我添加了一个示例来澄清。我相信这实际上很容易,但我无法确定如何去做。基本上我有很长的 ID 列表及其相应的频率,大约 45 个列表都很长。我想确定每个 ID 的总频率,但问题是每个 ID 都不在每个列表中。我试过将数据导入access,但是操作过于复杂导致access出错。
如果 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 实现,但我不太确定该怎么做。
对于这个基本问题,我深表歉意,期待任何评论,并将提供任何答案和澄清。
尝试使用 SUMIFS 函数。这是我在单元格 F2 中的内容:
`=SUMIFS($B:$B,$A:$A,E2) + SUMIFS($D:$D,$C:$C,E2)`
然后我将它复制到下面的单元格中。 E2 在第 2 个数据行中变为 E3,然后 E4 在第 3 个数据行中。
希望这个例子能让您了解它是如何工作的。如果您没有像我一样的 A-F 列,您可能需要进行一些调整以考虑更多行。
在 SPSS 中计算总频率很容易。将文件读入SPSS后,运行语法如下:
(这假设变量名称将以这种方式自动更改:IDCODE Frequency 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).
原始数据现在将以长格式组织,这样更容易分析。汇总的频率将出现在名为 "summary".
的新数据集中如果您的文件中有更多的数据列,将所有变量名都放在语法中可能会很麻烦。您可以通过在变量视图 window 中按名称对变量进行排序并从那里复制它们来缩短过程。
但是,如果您要重复该过程并且每个 运行 中可能有不同数量的变量,您应该完全自动化该过程。你可以这样做:
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.