楼主: leeloo_79
1983 9

[数据管理求助] 弱弱地请教二个关于数据整理的问题 [推广有奖]

  • 8关注
  • 1粉丝

讲师

28%

还不是VIP/贵宾

-

威望
0
论坛币
24 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
11911 点
帖子
184
精华
0
在线时间
369 小时
注册时间
2012-11-12
最后登录
2023-10-26

楼主
leeloo_79 发表于 2014-10-9 21:34:59 |AI写论文
10论坛币
SIFBEW%NNQ029DJG@GPBMO7.png
数据形式如上,第一个问题是:
想用变量crntast的当期值除以Rcvbl的上期值,即Crntast/Rcvbl,并生成新的变量new1.麻烦高手写个循环。

第二个问题是:
删除每个Coid的第一条或前两条变量。比如Coid190986的第一条数据是2000年,190987的第一条数据是2004年,或者190986的前两条数据是2000年和2001年,190987的前两条数据是2004年和2005年。


最佳答案

austen06 查看完整内容

local n _N forvalues i=2/`n'{ gen new1 = Crntast/Rcvbl[`i'-1] in `i' } "删除每个Coid的第一条或前两条变量" 信息过于含糊,没有统一的规则,你只能自己手动了
关键词:数据整理 数据形式 COI TAS NEW

沙发
austen06 发表于 2014-10-9 21:35:00
local n _N
forvalues i=2/`n'{
gen new1 = Crntast/Rcvbl[`i'-1] in `i'
}

"删除每个Coid的第一条或前两条变量" 信息过于含糊,没有统一的规则,你只能自己手动了
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

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

藤椅
zwj110 在职认证  发表于 2014-10-9 21:55:11
这有什么好难得,直接在excel里完成就好了,为什么要复杂化。第一个问题=a1/b2 然后往下一拉就好。第二个问题先按照从大到小排序,然后直接删除不就好了。

板凳
leeloo_79 发表于 2014-10-9 22:17:16
用excel太慢了,excel的内核太老了。数据量太大,100多万条,我现在就是用excel和stata配合处理。但是还是比较慢,在excel和stata之间反复的转换。所以能直接在stata里面处理最方便。

报纸
leeloo_79 发表于 2014-10-10 07:40:36
我的意思是说在一次操作中,针对所有的Coid统一删除第一条记录或者是前二条记录,而不是在一次操作中有些Coid删除第一条记录而有些Coid删除前两条记录。

地板
austen06 发表于 2014-10-10 07:56:30
leeloo_79 发表于 2014-10-10 07:40
我的意思是说在一次操作中,针对所有的Coid统一删除第一条记录或者是前二条记录,而不是在一次操作中有些Co ...
by Coid: drop if _n==1

by Coid: drop if _n==1 | _n==2

7
leeloo_79 发表于 2014-10-10 10:37:45
我把gen换成replace上面第一个循环就可以运行了。

8
leeloo_79 发表于 2014-10-10 18:49:09
又出现一个问题,如果变量中出现了为空的值,即使另外一个变量中有值,减法也无法计算。比如Totllb[`i']-Acpabl[`i'],如果Acpabl[`i']的值为空,那么即使Totllb[`i']中有值,相减的结果还是为空。如何解决?

9
austen06 发表于 2014-10-10 23:17:45
leeloo_79 发表于 2014-10-10 18:49
又出现一个问题,如果变量中出现了为空的值,即使另外一个变量中有值,减法也无法计算。比如Totllb[`i']-Ac ...
空值自然无法做减法,但是如果你认为那个空值是0的话,用replace 命令把这些设成0

10
leeloo_79 发表于 2014-10-11 09:00:25
我是想设置为零,但是用什么来表示这些空值。我用的是replace a=0 if a==" ",但是不行。类型不匹配,该变量是数值型。

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

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