楼主: 木牛流马0
2530 3

[数据管理求助] stata数据删除 [推广有奖]

  • 2关注
  • 0粉丝

讲师

20%

还不是VIP/贵宾

-

威望
0
论坛币
2680 个
通用积分
140.0773
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2616 点
帖子
128
精华
0
在线时间
716 小时
注册时间
2016-7-17
最后登录
2025-11-17

楼主
木牛流马0 学生认证  发表于 2021-6-14 11:19:28 |AI写论文
5论坛币
现有两列数据,一列是H,另一列是H1,H1是H的真子集(即H1包含于H),同时H和H1相等的数据并不一定在同一行。怎么删除H中包含的H1那一行。
简单做个例子如下:(我的数据量很大,一般的人工辨别不好弄)
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 city float price str15(H H1)
  4. "河北"  1 "上海化工"    "浙江工商"   
  5. "上海"  2 "武汉轻化工" "武汉轻化工"
  6. "重庆"  3 "浙江工商"    "上海化工"   
  7. "北京"  4 "江苏农场"    ""               
  8. "天津"  5 "上海迪士尼" ""               
  9. "浙江"  6 "北京故宫"    ""               
  10. "湖南"  7 "武汉黄鹤楼" ""               
  11. "湖北"  7 "重庆地铁"    ""               
  12. "江苏"  8 "河北石家庄" ""               
  13. "江西" 89 "湖南橘子洲" ""               
  14. end
复制代码

最佳答案

黃河泉 查看完整内容

不是看得很懂你要做什么,但请先试试
关键词:STATA数据 Stata tata generated generate
努力做一个不断向上的科研人

沙发
黃河泉 在职认证  发表于 2021-6-14 11:19:29
不是看得很懂你要做什么,但请先试试
  1. preserve
  2. keep H1
  3. gen d = 1
  4. ren H1 H
  5. drop if H == ""
  6. tempfile a
  7. save `a'
  8. restore

  9. merge m:1 H using `a'
复制代码

藤椅
917968079 发表于 2021-6-14 12:16:27
分别保存两列,然后匹配,之后再删除成功匹配的就行了

板凳
木牛流马0 学生认证  发表于 2021-6-14 12:52:36
黃河泉 发表于 2021-6-14 11:37
不是看得很懂你要做什么,但请先试试
黄老师,还是一如既往感谢您的回复,在您的命令后加上keep if _merge == 3就可以满足我的需求了。结果是这样:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 city float price str15(H H1) float d byte _merge
  4. "河北" 1 "上海化工"    "浙江工商"    1 3
  5. "上海" 2 "武汉轻化工" "武汉轻化工" 1 3
  6. "重庆" 3 "浙江工商"    "上海化工"    1 3
  7. end
  8. label values _merge _merge
  9. label def _merge 3 "matched (3)", modify
复制代码

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

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