楼主: peyzf
2071 5

[数据管理求助] 如何在删除重复观察值的同时保证数据的完整性? [推广有奖]

  • 1关注
  • 63粉丝

警督

大师

59%

还不是VIP/贵宾

-

威望
2
论坛币
566735 个
通用积分
200.4746
学术水平
218 点
热心指数
240 点
信用等级
140 点
经验
132065 点
帖子
12769
精华
0
在线时间
2976 小时
注册时间
2007-9-8
最后登录
2025-10-10

楼主
peyzf 发表于 2014-8-12 22:20:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如下表,id中存在多个相同记录,但x*在每个id记录值中均不完整

id

x2

x3

x4

x5

1

3

1

5

1

国有企业

1

2

11

2

10

2

私营企业

2




如何得到如下想要的结果?注意, x中既包括数值型变量,也包括字符型变量。

id

x2

x3

x4

x5

1

3

5

国有企业

2

11

10

私营企业

二维码

扫码加我 拉你入群

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

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

关键词:完整性 字符型变量 私营企业 国有企业 字符型 国有企业 如何 记录

沙发
luoguifa 发表于 2014-8-12 22:29:23
也想知道

藤椅
voodoo 发表于 2014-8-12 22:42:07

试试:
  1. preserve
  2. keep id
  3. duplicates drop id, force
  4. save target, replace
  5. restore

  6. foreach v of varlist x2-x5 {
  7.     preserve
  8.     keep id `v'
  9.     keep if !missing(`v')
  10.     merge 1:1 id using target, nogen
  11.     save target, replace
  12.     erase `v'.dta
  13.     restore
  14. }

  15. // here comes what you want
  16. use target, clear
  17. browse
复制代码

已有 1 人评分学术水平 热心指数 收起 理由
peyzf + 1 + 1 good suggestion.

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

板凳
hplcdadong 发表于 2014-8-13 08:14:38
*It's better to trim you string variables first (in this case x4,x5), this will guarantee the following procedure will work in any condition

replace x4=trim(x4)
replace x5=trim(x5)


foreach var of varlist x2-x5 {
bysort id: replace `var'=`var'[_n-1] if missing(`var')
}

by id: keep if _n==_N
已有 2 人评分学术水平 热心指数 收起 理由
voodoo + 1 + 5 简洁的解决方案,我真是想多了。:-)
peyzf + 1 + 1 good suggesiton

总评分: 学术水平 + 2  热心指数 + 6   查看全部评分

报纸
ywh19860616 发表于 2014-8-13 09:13:09
  1. clear
  2. input id x2 x3 str20 (x4 x5)
  3. 1 3 . "" ""
  4. 1 . 5 "" ""
  5. 1 . . g ""
  6. 1 . . "" yes
  7. 2 11 . "" ""
  8. 2 . 10 "" ""
  9. 2 . . s ""
  10. 2 . . "" no
  11. end


  12. forv i=2/5 {
  13. egen nx`i'=group(x`i')
  14. sort id nx`i'
  15. replace x`i'=x`i'[_n-1] if missing(x`i')
  16. drop nx`i'
  17. }

  18. duplicates drop
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
peyzf + 1 + 1 good suggestion

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

地板
peyzf 发表于 2014-8-13 15:12:11
pretty cool, thanks~

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-4 03:43