楼主: 朗啊朗
2910 11

[数据管理求助] 如何根据两个变量的特征删除数据? [推广有奖]

  • 2关注
  • 0粉丝

本科生

48%

还不是VIP/贵宾

-

威望
0
论坛币
3008 个
通用积分
5.3721
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2057 点
帖子
27
精华
0
在线时间
156 小时
注册时间
2016-2-1
最后登录
2023-7-30

楼主
朗啊朗 发表于 2020-1-3 21:54:43 |AI写论文
20论坛币

如下面的例子所示,第一列是account_id,第二列是buy_user_id,第三列是省份,第四列是城市,我想结合这四个变量或者前两个变量来清洗数据。清洗的规则是,如果account_id连续一样,并且buy_user_id也连续一样,则保留数据;但是,如果account_id连续一样,而buy_user_id连续不一样,则删除数据。希望有大神能帮忙解决这个问题。



copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str36(account_id buy_user_id) str24 province str33 city
  4. "00000000-0000-0000-0000-000000000000" "FF84C719-58EE-439E-95B7-E4D26B4D2F96" "山西省" "运城市"
  5. "00000000-0000-0000-0000-000000000000" "FF9868CF-6C02-4658-A317-2CDB8997380D" "安徽省" "六安市"
  6. "00000000-0000-0000-0000-000000000000" "FFCF58F8-A084-4CC3-A658-54B48A8B6E77" "四川省" "南充市"
  7. "00000000-0000-0000-0000-000000000000" "FFD8FBD6-F92D-4578-8E8F-B908784EA123" "广东省" "肇庆市"
  8. "000036A7-FCDB-4442-B6AB-D32B33499E60" "C36E153B-EBDD-4303-99EC-ECFFE6576CFA" "浙江省" "宁波市"
  9. "000036A7-FCDB-4442-B6AB-D32B33499E60" "C36E153B-EBDD-4303-99EC-ECFFE6576CFA" "浙江省" "宁波市"
  10. "000036A7-FCDB-4442-B6AB-D32B33499E60" "C36E153B-EBDD-4303-99EC-ECFFE6576CFA" "浙江省" "宁波市"
  11. end
复制代码

------------------ copy up to and including the previous line ------------------




关键词:including generated generate previous province

沙发
震震果实 发表于 2020-1-3 21:54:44
  1. bys account_id buy_user_id:keep if _N>1
复制代码

藤椅
蓝色 发表于 2020-1-3 22:09:13
先安装egenmore 命令

  1. bys account_id: egen n=nvals(buy_user_id)
  2. drop if  n>1
复制代码

板凳
朗啊朗 发表于 2020-1-4 15:54:16
蓝色 发表于 2020-1-3 22:09
先安装egenmore 命令
感谢您的热心回复!

报纸
朗啊朗 发表于 2020-1-8 17:06:12
震震果实 发表于 2020-1-3 21:54
您好,感谢您您对这个问题的回复,我想再问一下,如果我不是想删除这种特征的数据,而是把它们标记出来,作为一个控制组,请问我应该怎么写代码呢?

地板
朗啊朗 发表于 2020-1-8 17:06:49
蓝色 发表于 2020-1-3 22:09
先安装egenmore 命令
您好,感谢您对这个问题的回复,我想再问一下,如果我不是想删除这种特征的数据,而是把它们标记出来,作为一个控制组,请问我应该怎么写代码呢?

7
震震果实 发表于 2020-1-8 19:04:42
朗啊朗 发表于 2020-1-8 17:06
您好,感谢您您对这个问题的回复,我想再问一下,如果我不是想删除这种特征的数据,而是把它们标记出来, ...
bys account_id buy_user_id:gen wanted=(_N==1)

8
震震果实 发表于 2020-1-8 19:04:58
朗啊朗 发表于 2020-1-8 17:06
您好,感谢您您对这个问题的回复,我想再问一下,如果我不是想删除这种特征的数据,而是把它们标记出来, ...
  1. bys account_id buy_user_id:gen wanted=(_N==1)
复制代码

9
朗啊朗 发表于 2020-1-8 19:48:54
震震果实 发表于 2020-1-8 19:04
感谢您的回答!我自己摸索到了您这个代码的思路,不过我标记之后,发现我并没有解决我的问题,因为我最后想实现的是,  生成一个新的变量,如果ccount_id连续一样,并且wanted连续一样,那么,这个新变量的值全部编码为1;如果ccount_id连续一样,但是wanted出现1个或多个不同的值(不是连续一样),那么这个新变量就全部编码为0。

以我下面的这个例子为例,对于第一个id "0054F5D8-05DA-45CB-9EE5-F7E586833655" 它wanted的值是0,0,0,1, 那么生成的新变量的值就是0,0,0,0 ;对于第二个id "005B8478-5B59-4883-9EF3-33E357D57CC4"它wanted的值是0,0, 那么生成的新变量的值就是1,1。

请问您知道如何写代码吗?


---------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str36 account_id float wanted
  4. "0054F5D8-05DA-45CB-9EE5-F7E586833655" 0
  5. "0054F5D8-05DA-45CB-9EE5-F7E586833655" 0
  6. "0054F5D8-05DA-45CB-9EE5-F7E586833655" 0
  7. "0054F5D8-05DA-45CB-9EE5-F7E586833655" 1
  8. "005B8478-5B59-4883-9EF3-33E357D57CC4" 0
  9. "005B8478-5B59-4883-9EF3-33E357D57CC4" 0
  10. end
复制代码

------------------ copy up to and including the previous line ------------------



10
震震果实 发表于 2020-1-8 19:58:31
朗啊朗 发表于 2020-1-8 19:48
感谢您的回答!我自己摸索到了您这个代码的思路,不过我标记之后,发现我并没有解决我的问题,因为我最后 ...
  1. sort account_id
  2. bys account_id:egen n=total(wanted)
  3. bys account_id:replace n=n/_N
  4. gen s=wanted-n
  5. replace s=1 if s==0
  6. replace s=0 if s!=0 & s!=1
复制代码

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 13:05