楼主: serenaakh
1248 9

[原创博文] 关于用sas 求一个变量的问题 帮帮我 谢谢了~ [推广有奖]

  • 4关注
  • 1粉丝

本科生

90%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
102 点
帖子
115
精华
0
在线时间
77 小时
注册时间
2010-10-14
最后登录
2016-5-30

楼主
serenaakh 发表于 2012-4-5 12:12:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
96.jpg

我想求 一个变量 SG= (t年的 sales减去 t-1年的sales) 除以t-1年的sales 乘以100
如图
98.jpg
但我的 date 都是1981到2010之间循环的;
我用什么方法可以求出 SG?
我自己是先把他给转置
proc transpose data=Lc out=SG prefix=ndt;
      var sales;
      by code6 coname notsorted;
          run;

然后再
SG01=(ndt02-ndt01)/ndt01*100; SG02=(ndt03-ndt02)/ndt02*100; SG03=(ndt04-ndt03)/ndt03*100; SG04=(ndt05-ndt04)/ndt04*100;
SG01=(ndt02-ndt01)/ndt01*100; SG02=(ndt03-ndt02)/ndt02*100;


有更简便的办法吗~?
因为我的方法 要来回的导出 储存 导入~
二维码

扫码加我 拉你入群

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

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

关键词:Transpose sorted sales Trans sale

回帖推荐

mymine 发表于4楼  查看完整内容

proc sort data=lc; by coname date; run; data lc; set lc; by coname; sg=100*(sales-lag(sales))/sales; if first.coname then sg=.; if year-lag(year)>1 then sg=.; run;

沙发
456852 发表于 2012-4-5 13:11:37
1981年的那条记录是什么值?缺失?另外,你第一条是1981,第二条是1983,请问第二条的sg如何计算?

藤椅
mymine 发表于 2012-4-5 13:35:11
用 lag

板凳
mymine 发表于 2012-4-5 13:42:18
proc sort data=lc;
by coname date;
run;
data lc;
set lc;
by coname;
sg=100*(sales-lag(sales))/sales;
if first.coname then sg=.;
if year-lag(year)>1 then sg=.;
run;

报纸
serenaakh 发表于 2012-4-5 13:45:05
456852 发表于 2012-4-5 13:11
1981年的那条记录是什么值?缺失?另外,你第一条是1981,第二条是1983,请问第二条的sg如何计算?
其实我也很诧异这个地方
数据下载下来之后 就没有1982年的
而且 后面有很多缺少的年份
并不是规整的 30年一轮30年一轮
这样有办法计算吗
(例如后面有很多是从97年开始 有的从99年开始)
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

地板
serenaakh 发表于 2012-4-5 13:46:34
mymine 发表于 2012-4-5 13:35
用 lag
非常感谢~
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

7
chendonghui1987 发表于 2012-4-5 14:18:10
也不知道是不是你要的,给你一个例子
data a;
input id $ realday spending;
datalines;
1000501 1981 24.6
1000501 1982 25.6
1000501 1983 26.6
1000501 1985 27.6
1000502 1981 24.6
1000502 1982 25.6
1000503 1981 24.6
1000503 1982 25.6
1000503 1984 26.6
;
run;

proc sort data = a out = b;

8
chendonghui1987 发表于 2012-4-5 14:20:33
by id realday;
quit;

data c;
retain start;
set b;
by id realday;
if first.id then do;
start = spending;
dif = 0;
end;else do;
dif = spending-start;
start = spending;
end;
run;

9
serenaakh 发表于 2012-4-5 14:35:29
chendonghui1987 发表于 2012-4-5 14:20
by id realday;
quit;
谢谢谢谢~
这个例子跟我的情况很像~
非常感谢~
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

10
chendonghui1987 发表于 2012-4-5 14:37:09
不客气,希望对你有帮助

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 06:47