【问题标题】:SPSS Looping across multiple string variables to find duplicatesSPSS遍历多个字符串变量以查找重复项
【发布时间】:2014-11-12 15:34:05
【问题描述】:

我有一个很长的记录列表,其中包含两列 x1 和 x2 中的文本名称。我想将 x2 名称与 x1 名称进行比较,并识别与 x1 的任何实例匹配的名称,并将其记录在 temp 变量中。我试过循环遍历这两列(见下面的语法),但每条记录都有一个“y”。

我希望有人能告诉我正确的语法。

谢谢

布伦

string temp(a1).
compute temp= "n".
vector x=x1 to x2.
loop #i=1 TO 77700.
loop #j = (#i+1) to 77700.
if x(#i)=x(#j) temp = "y".
end loop.
end loop.
execute.

【问题讨论】:

  • 我删除了示例数据,它没有以表格格式显示。
  • x2 中的每个名字都是唯一的吗?
  • Mirirai,我希望以下内容能够澄清。 x1 中的名称采用长格式,5 个可能的 x2 名称相同。x1 x2 temp Greg Smith Allen Anderson n Greg Smith Jack Lovin y Tom Watson Henry Jones n Ellen Hampton Jack Lovin y Jack Lovin Fred Dover y Jack Lovin Alice Wanders n Jack Lovin Patrick Evans n Jack Lovin Thomas Smith n Fred Dover Kelly Bunson n
  • 更直接的答案是否定的,x2 中的名称不一定是唯一的。抱歉,如果这不是我希望的那样清楚。

标签: string loops spss


【解决方案1】:

我相信我解决了这个问题。

COMPUTE index=$CASENUM.
SORT CASES BY name1.
STRING key (a63).
COMPUTE main=name2.
AGGREGATE OUTFILE * / BREAK name1 / found=N.
RENAME VARIABLES name1=main.
MATCH FILES FILE index / TABLE * /IN=match / BY main .
SORT CASES BY index.

感谢那些查看并为我考虑问题的人。

【讨论】:

  • 是的,这对我来说是一个很好的解决方案。但是,我想为语法添加一些想法/建议。 1) 在 Aggregate Outfile 命令中使用 *-Operator 可能会覆盖您的原始数据集,然后语法失败。 2)您不需要将“name2”复制到“main”或将“name1”重命名为“main”。相反,您可以在“TABLE *”的“匹配文件”中使用子命令 /RENAME (name1 = name2) 。在这种情况下,您当然可以通过变量“name2”进行匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 2010-11-12
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多