楼主: moonstone
17490 2

[学习资料] 利用SPSS进行查重并删除重复记录 [推广有奖]

已卖:1872份资源

讲师

74%

还不是VIP/贵宾

-

威望
0
论坛币
10498 个
通用积分
369.3483
学术水平
160 点
热心指数
169 点
信用等级
124 点
经验
274646 点
帖子
237
精华
1
在线时间
520 小时
注册时间
2007-4-27
最后登录
2024-12-6

楼主
moonstone 发表于 2012-4-9 15:31:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
* 今天发现SPSS原来有专门的查重功能,不过思路比SAS复杂多啦,从下面的语法就可以看得出来,不过菜单很简单,Data--Identify dulplicate cases.
* 利用菜单可以实现以一个为关键变量(如ID)来查重,也可以实现根据两个变量确定的查重(如下面2中的name和age).
* 发现重复记录的删除方法是select cases,不过过程有点绕,不是直选中要接删除的记录,而是选中不要删除的记录,所以得注意.
* 举一个例子说明上述功能.

ID

name

age

1

chen

24

2

li

45

3

li

45

4

he

43

4

John

65

5

tom

23

6

lily

67


.

* 1. 以ID为关键变量查重.
SORT CASES BY ID(A).
MATCH FILES
  /FILE=*
  /BY ID
  /FIRST=PrimaryFirst
  /LAST=PrimaryLast.
DO IF (PrimaryFirst).
COMPUTE  MatchSequence=1-PrimaryLast.
ELSE.
COMPUTE  MatchSequence=MatchSequence+1.
END IF.
LEAVE  MatchSequence.
FORMATS  MatchSequence (f7).
COMPUTE  InDupGrp=MatchSequence>0.
SORT CASES InDupGrp(D).
MATCH FILES
  /FILE=*
  /DROP=PrimaryFirst InDupGrp MatchSequence.
VARIABLE LABELS  PrimaryLast 'Indicator of each last matching case as Primary'.
VALUE LABELS  PrimaryLast 0 'Duplicate Case' 1 'Primary Case'.
VARIABLE LEVEL  PrimaryLast (ORDINAL).
FREQUENCIES VARIABLES=PrimaryLast.
EXECUTE.


* 删除重复记录.
FILTER OFF.
USE ALL.
SELECT IF (PrimaryLast = 1).
EXECUTE.


* 2. 以name和age定义重复记录.
SORT CASES BY name(A) age(A).
MATCH FILES
  /FILE=*
  /BY name
  /FIRST=PrimaryFirst
  /LAST=PrimaryLast.
DO IF (PrimaryFirst).
COMPUTE  MatchSequence=1-PrimaryLast.
ELSE.
COMPUTE  MatchSequence=MatchSequence+1.
END IF.
LEAVE  MatchSequence.
FORMATS  MatchSequence (f7).
COMPUTE  InDupGrp=MatchSequence>0.
SORT CASES InDupGrp(D).
MATCH FILES
  /FILE=*
  /DROP=PrimaryFirst InDupGrp MatchSequence.
VARIABLE LABELS  PrimaryLast 'Indicator of each last matching case as Primary'.
VALUE LABELS  PrimaryLast 0 'Duplicate Case' 1 'Primary Case'.
VARIABLE LEVEL  PrimaryLast (ORDINAL).
FREQUENCIES VARIABLES=PrimaryLast.
EXECUTE.




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:SPSS PSS frequencies duplicate Variables 记录

沙发
matlab-007 发表于 2015-12-8 08:29:43
Data菜单下有一个“Identifying Duplicate Cases”的程序,应该可以解决你的问题。但我没有用过那个程序,而是用下述的syntax写一个程序来做,
  sort cases by ID.
  compute ROW=$casenum.
  aggregate outfile 'c:\temp.sav'/break ID/ROW2=first(ROW).
  match files file */table 'c:\temp.sav'/by ID.
  select if ROW=ROW2.
  delete variable ROW ROW2.
  exe.

藤椅
matlab-007 发表于 2015-12-8 08:30:14
Data菜单下有一个“Identifying Duplicate Cases”的程序,应该可以解决你的问题。但我没有用过那个程序,而是用下述的syntax写一个程序来做,
  sort cases by ID.
  compute ROW=$casenum.
  aggregate outfile 'c:\temp.sav'/break ID/ROW2=first(ROW).
  match files file */table 'c:\temp.sav'/by ID.
  select if ROW=ROW2.
  delete variable ROW ROW2.
  exe.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-2 10:54