楼主: costmanagement
3968 10

循环替换数据? [推广有奖]

  • 0关注
  • 0粉丝

已卖:77份资源

硕士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
775 个
通用积分
0.8500
学术水平
0 点
热心指数
6 点
信用等级
0 点
经验
1803 点
帖子
112
精华
0
在线时间
110 小时
注册时间
2009-8-28
最后登录
2023-12-4

楼主
costmanagement 发表于 2010-12-6 01:30:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问:如果我要将四季度(Q4)的收入(rev)换成原来第四季度的收入-前三个季度的收入之和,即Q4-(Q1+Q2+Q3)。数据量大,需要循环运算,该如何编程?另外,如果后一个季度的rev大于前一个季度的rev, 我需要将其分成一组,并设虚拟变量,如何编程?非常感谢!!下面是部分数据:

Stc_Enddttyperev
C0000022002-03-31Q1549639027
C0000022002-06-30Q2952349935
C0000022002-09-30Q3852491194
C0000022002-12-31Q42.22E+09
C0000022003-03-31Q1779794223
C0000022003-06-30Q21.411E+09
C0000022003-09-30Q31.074E+09
C0000022003-12-31Q43.115E+09
C0000022004-03-31Q11.031E+09
C0000022004-06-30Q21.438E+09
C0000022004-09-30Q31.006E+09
C0000022004-12-31Q44.192E+09
C0000022005-03-31Q11.886E+09
C0000022005-06-30Q22.449E+09
C0000022005-09-30Q31.222E+09
C0000022005-12-31Q45.003E+09
C0000022006-03-31Q12.304E+09
C0000022006-06-30Q24.366E+09
C0000022006-09-30Q31.839E+09
C0000022006-12-31Q49.41E+09
二维码

扫码加我 拉你入群

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

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

关键词:type 部分数据 非常感谢 虚拟变量 四季度 数据

沙发
costmanagement 发表于 2010-12-6 18:02:23
版主帮帮忙呀

藤椅
蓝色 发表于 2010-12-6 18:36:11
不知道你为什么要这么做?
第一问和第二问最终目的是做什么的?

板凳
costmanagement 发表于 2010-12-6 18:43:06
第一个问:Q4的收入rev是全年的总额,而其他的是各季度的数据,现在我要各个季度的数据,所以第四季度的数据要从全年的数据中减前三个季度的。
第二个问:我需要分类,将rev高于前一季度的数据分为增长组,而低于前一季度的归为减少组。
请帮忙吧,谢谢!!

报纸
蓝色 发表于 2010-12-6 20:49:36
你的第个数据比前三个的和小啊

地板
costmanagement 发表于 2010-12-6 23:26:40
Q4的rev是科学计数,一般应该比Q1,Q2,Q3大,除非第四季度出现重大亏损。这就是Q4是年报的数据,前面Q1-Q3是季报数据,现在我需要第四季的数据,即用真正四季度的数据替换年报的数据。请指点指点,非常感谢!

7
蓝色 发表于 2010-12-7 07:15:28
clear

input str20 Stc str20 Enddt str20 type rev
C000002 2002-03-31 Q1 549639027
C000002 2002-06-30 Q2 952349935
C000002 2002-09-30 Q3 852491194
C000002 2002-12-31 Q4 2.22E+09
C000002 2003-03-31 Q1 779794223
C000002 2003-06-30 Q2 1.411E+09
C000002 2003-09-30 Q3 1.074E+09
C000002 2003-12-31 Q4 3.115E+09
C000002 2004-03-31 Q1 1.031E+09
C000002 2004-06-30 Q2 1.438E+09
C000002 2004-09-30 Q3 1.006E+09
C000002 2004-12-31 Q4 4.192E+09
C000002 2005-03-31 Q1 1.886E+09
C000002 2005-06-30 Q2 2.449E+09
C000002 2005-09-30 Q3 1.222E+09
C000002 2005-12-31 Q4 5.003E+09
C000002 2006-03-31 Q1 2.304E+09
C000002 2006-06-30 Q2 4.366E+09
C000002 2006-09-30 Q3 1.839E+09
C000002 2006-12-31 Q4 9.41E+09
C000001 2002-03-31 Q1 549639027
C000001 2002-06-30 Q2 952349935
C000001 2002-09-30 Q3 852491194
C000001 2002-12-31 Q4 2.22E+09
C000001 2003-03-31 Q1 779794223
C000001 2003-06-30 Q2 1.411E+09
C000001 2003-09-30 Q3 1.074E+09
C000001 2003-12-31 Q4 3.115E+09
C000001 2004-03-31 Q1 1.031E+09
C000001 2004-06-30 Q2 1.438E+09
C000001 2004-09-30 Q3 1.006E+09
C000001 2004-12-31 Q4 4.192E+09
C000001 2005-03-31 Q1 1.886E+09
C000001 2005-06-30 Q2 2.449E+09
C000001 2005-09-30 Q3 1.222E+09
C000001 2005-12-31 Q4 5.003E+09
C000001 2006-03-31 Q1 2.304E+09
C000001 2006-06-30 Q2 4.366E+09
C000001 2006-09-30 Q3 1.839E+09
C000001 2006-12-31 Q4 9.41E+09

end

des
sum

format rev %12.0g

*日期变量调整
generate date=date(Enddt,"YMD")
format   date  %d


gen year = year(date)
gen month=month(date)
gen day  =  day(date)

list year month day  date

sum

*
sort Stc year month

by Stc year: gen quarter=_n
***************************************************
gsort Stc year quarter
gen rev0=rev
format rev0 %12.0g

*第一个问题的
*这就是替换的命令
by Stc year: replace rev=rev-(rev[_n-1]+rev[_n-2]+rev[_n-3])    if quarter==4
list  year quarter rev0 rev

*第二个问题
by Stc year: gen rev1=(rev-rev[_n-1])
list  year quarter rev0 rev rev1

gen      index=1 if rev1 >0 & rev1~=.
replace  index=0 if rev1 <0
list  year quarter rev0 rev rev1 index

8
costmanagement 发表于 2010-12-8 00:07:57
谢谢!我试试看。

9
costmanagement 发表于 2010-12-8 20:28:19
楼主:善哉!成功,非常感谢,rev0没有用。

10
蓝色 发表于 2010-12-8 20:50:53
我怕把原始的数据更改了
产生个新的操作

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

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