楼主: zabbyy
1785 18

[数据管理求助] 求助数据处理 [推广有奖]

  • 6关注
  • 4粉丝

已卖:171份资源

讲师

80%

还不是VIP/贵宾

-

威望
0
论坛币
222 个
通用积分
258.9018
学术水平
19 点
热心指数
21 点
信用等级
9 点
经验
99414 点
帖子
498
精华
0
在线时间
684 小时
注册时间
2015-12-27
最后登录
2026-2-2

楼主
zabbyy 发表于 2018-5-19 10:27:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
a        b
1       
1        美国       
1       
2       
2       
2        英国
2
2
2
2       
2       
3       
3       
3       
3       
3        爱尔兰
两个变量a和b ,如何使得a=1对应b全是美国、a=2对应的b全是英国、a=3对应的b全是爱尔兰?
因为数据量太大,replace命令不方便,有没有更好的解决办法?
请大神们不吝赐教!!


二维码

扫码加我 拉你入群

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

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

关键词:数据处理 replace place 解决办法 lace

回帖推荐

天南水北 发表于14楼  查看完整内容

preserve keep if b!="" forvalues i=1/`=_N'{ local v=`"`v' `=a[`i']' "`=b[`i']'""' } restore label define a `v' label value a a
越努力 越幸运

沙发
黃河泉 在职认证  发表于 2018-5-19 10:32:51
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

藤椅
zabbyy 发表于 2018-5-19 10:40:02
黃河泉 发表于 2018-5-19 10:32
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明), ...
谢谢老师指点,
数据形式如下
----------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float a str6 b
  4. 1 ""      
  5. 1 "美国"  
  6. 1 ""      
  7. 1 ""      
  8. 2 ""      
  9. 2 ""      
  10. 2 "英国"  
  11. 2 ""      
  12. 2 ""      
  13. 3 ""      
  14. 3 ""      
  15. 3 ""      
  16. 3 ""      
  17. 3 "爱尔兰"
  18. end
复制代码
------------------ copy up to and including the previous line ------------------

Listed 14 out of 14 observations

板凳
黃河泉 在职认证  发表于 2018-5-19 10:49:00
zabbyy 发表于 2018-5-19 10:40
谢谢老师指点,
数据形式如下
----------------------- copy starting from the next line ----------- ...
试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float a str10 b
  4. 1 ""      
  5. 1 "美国"  
  6. 1 ""      
  7. 1 ""      
  8. 2 ""      
  9. 2 ""      
  10. 2 "英国"  
  11. 2 ""      
  12. 2 ""      
  13. 3 ""      
  14. 3 ""      
  15. 3 ""      
  16. 3 ""      
  17. 3 "爱尔兰"
  18. end

  19. gsort a -b
  20. bys a: replace b = b[_n-1] if b == ""
  21. list
复制代码
已有 1 人评分论坛币 收起 理由
zabbyy + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

报纸
黃河泉 在职认证  发表于 2018-5-19 10:50:15
  1. . list

  2.      +------------+
  3.      | a        b |
  4.      |------------|
  5.   1. | 1     美国 |
  6.   2. | 1     美国 |
  7.   3. | 1     美国 |
  8.   4. | 1     美国 |
  9.   5. | 2     英国 |
  10.      |------------|
  11.   6. | 2     英国 |
  12.   7. | 2     英国 |
  13.   8. | 2     英国 |
  14.   9. | 2     英国 |
  15. 10. | 3   爱尔兰 |
  16.      |------------|
  17. 11. | 3   爱尔兰 |
  18. 12. | 3   爱尔兰 |
  19. 13. | 3   爱尔兰 |
  20. 14. | 3   爱尔兰 |
  21.      +------------+
复制代码
已有 1 人评分学术水平 收起 理由
天南水北 + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

地板
zabbyy 发表于 2018-5-19 10:59:02
黄老师,因为数据量太大,gsort a -b这个排序要很长时间,有没有更直接的命令呢?

7
天南水北 发表于 2018-5-19 11:40:58
zabbyy 发表于 2018-5-19 10:59
黄老师,因为数据量太大,gsort a -b这个排序要很长时间,有没有更直接的命令呢?
可以按照不同的a直接切割成不同的小dta再合并。或者封装成ado,启动by功能。
不过我对你这个给的方案是。等下我码字
已有 1 人评分论坛币 收起 理由
zabbyy + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

8
黃河泉 在职认证  发表于 2018-5-19 11:40:59
zabbyy 发表于 2018-5-19 10:59
黄老师,因为数据量太大,gsort a -b这个排序要很长时间,有没有更直接的命令呢?
不知道。

9
黃河泉 在职认证  发表于 2018-5-19 11:41:39
zabbyy 发表于 2018-5-19 10:59
黄老师,因为数据量太大,gsort a -b这个排序要很长时间,有没有更直接的命令呢?
你原始资料是长什么样子?

10
天南水北 发表于 2018-5-19 11:44:10
preserve
        tempfile a
        keep if b!=""
        save `a',replace
restore
drop b
merge m:1 a using `a',nogen
不确定会不会比黄老师的快。

已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
zabbyy + 5 精彩帖子
黃河泉 + 2 + 2 + 2 好的意见建议

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 08:42