楼主: wzr_2011
5293 13

[数据管理求助] 如何用stata中collapse命令取变量的第一个非零值? [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

讲师

28%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
61.1423
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
11383 点
帖子
202
精华
0
在线时间
422 小时
注册时间
2011-5-11
最后登录
2024-12-18

楼主
wzr_2011 发表于 2021-5-7 14:56:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,我知道collapse命令中有first和firstnm用来取值变量的第一个数值,但有时候当第一个值是零,而需要取第一个非零值怎么办?我尝试过在变量后加“if v != 0”的限制条件,但想了下这只是意味着将第一个数值为零的数值给排除了。以上,求问!
二维码

扫码加我 拉你入群

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

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

关键词:Collapse Stata lapse tata PSE

回帖推荐

黃河泉 发表于13楼  查看完整内容

更多的讨论:https://www.statalist.org/forums/forum/general-stata-discussion/general/1608266-return-first-non-zero-value。

DΘstinyじò 发表于10楼  查看完整内容

如果是两个变量,或者是删除0值不影响其他变量统计直接删除,然后collapse。 如果有影响,那就将变量里面的0值replace为数值型空值"." (或者新建一个变量replace),然后collapse 用firstnm。 想用collapse命令就是这样。 不用的话,参考黄老师建议即可。

黃河泉 发表于4楼  查看完整内容

Clyde Schechter 建议

沙发
DΘstinyじò 发表于 2021-5-7 23:17:40
把0值先删除了?反正collapse的结果也是会覆盖当前数据。

藤椅
wzr_2011 发表于 2021-5-8 08:44:39
DΘstinyじò 发表于 2021-5-7 23:17
把0值先删除了?反正collapse的结果也是会覆盖当前数据。
当时想过这个思路,我这个数据是类似这样子的,就是不知道如何实现删除第一个为零的值,所以不知道如何继续下去额
id date tbalance
1  20140321  20111
1  20140322  20111
2  20140301  0
2  20140302  20111
3  20140301  0
3  20140302  19822

板凳
黃河泉 在职认证  发表于 2021-5-8 09:23:09
DΘstinyじò 发表于 2021-5-7 23:17
把0值先删除了?反正collapse的结果也是会覆盖当前数据。
Clyde Schechter 建议
  1. // https://bbs.pinggu.org/thread-10589212-1-1.html
  2. clear
  3. input id x
  4. 1 .
  5. 1 0
  6. 1 3
  7. 1 4
  8. 2 0
  9. 2 .
  10. 2 0
  11. 2 8
  12. end

  13. gen byte not_these = missing(x) | x == 0
  14. gen long obs_no = _n
  15. by id (not_these obs_no), sort: gen wanted = x[1]
复制代码

报纸
wzr_2011 发表于 2021-5-8 14:55:26
黃河泉 发表于 2021-5-8 09:23
Clyde Schechter 建议
感谢!虽然对stata还不是很熟悉,但大概弄懂了。有一个不太确定的地方是:最后一行代码中,x[1]中的1是指通过by排序后将每一个id下,变量x中排序在第一个的数值对吗?我查了下不管是by还是sort的help文件,好像都没有提到这个用法额,请问具体这个用法应该去搜哪个help文件呢?

地板
黃河泉 在职认证  发表于 2021-5-8 15:55:32
wzr_2011 发表于 2021-5-8 14:55
感谢!虽然对stata还不是很熟悉,但大概弄懂了。有一个不太确定的地方是:最后一行代码中,x[1]中的1是指 ...
没错!

7
wzr_2011 发表于 2021-5-8 16:08:03
黃河泉 发表于 2021-5-8 15:55
没错!
再次感谢,但是对于这个用法,想知道可不可以用x[2],或者x[max]这种表述方式来灵活运用?还是这只是一个特定的用法?

8
黃河泉 在职认证  发表于 2021-5-8 16:11:39
wzr_2011 发表于 2021-5-8 16:08
再次感谢,但是对于这个用法,想知道可不可以用x[2],或者x[max]这种表述方式来灵活运用?还是这只是一个 ...
应该是可以的

9
DΘstinyじò 发表于 2021-5-8 18:41:22
wzr_2011 发表于 2021-5-8 16:08
再次感谢,但是对于这个用法,想知道可不可以用x[2],或者x[max]这种表述方式来灵活运用?还是这只是一个 ...
第一个值   :x[1]
当前值      :x[_n]
最后一个值:x[_N]

10
DΘstinyじò 发表于 2021-5-8 19:08:29
wzr_2011 发表于 2021-5-8 08:44
当时想过这个思路,我这个数据是类似这样子的,就是不知道如何实现删除第一个为零的值,所以不知道如何继 ...
如果是两个变量,或者是删除0值不影响其他变量统计直接删除,然后collapse。  
如果有影响,那就将变量里面的0值replace为数值型空值"." (或者新建一个变量replace),然后collapse 用firstnm。
想用collapse命令就是这样。
不用的话,参考黄老师建议即可。

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

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