楼主: ilovekate
1601 5

求助sas数据处理代码 [推广有奖]

  • 0关注
  • 3粉丝

讲师

93%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
1.0034
学术水平
1 点
热心指数
3 点
信用等级
1 点
经验
22637 点
帖子
578
精华
0
在线时间
249 小时
注册时间
2010-11-22
最后登录
2023-9-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助各位:
假如数据集a:
code   var1     var2
1           5             100
2           6            120
3           4.5        90
4         4.5             90
。。。。
101      10            250
102      9             180

。。。。
201     13          300
202      14       279
。。。
需要把1-100的数据中第一个观测中var2值以5作为基准,就是让第一个观测中Var2=5;
101-200的数据中第一个观测中的var2值以10作为基准,就是让第一个观测中Var2=10;
201-300的数据中第一个观测中的var2值以13作为基准,就是让第一个观测中Var2=13;
求sas代码,非常感谢。

二维码

扫码加我 拉你入群

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

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

关键词:sas数据处理 数据处理代码 数据处理 sas代码 非常感谢 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

沙发
zhangzachary 发表于 2013-2-2 19:44:00 |只看作者 |坛友微信交流群
没太看懂要求,根据自己的理解,你需要的是:
  1. data final;
  2.   set a;
  3.   if mod(code,100)=1 then var2=var1;
  4. run;
复制代码
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

藤椅
ilovekate 发表于 2013-2-2 20:07:12 |只看作者 |坛友微信交流群
zhangzachary 发表于 2013-2-2 19:44
没太看懂要求,根据自己的理解,你需要的是:
就是想对1-100个数据用var2/(var2的第一个观测)*(var1的第一个观测)
对101-200个数据用var2/(var2的第101个观测)*(var1的第101个观测)
对201-300个数据用var2/(var2的第201个观测)*(var1的第201个观测)
。。。
对(n*100+1)-(n*100+100)个数据用var2/(var2的第n*100+1个观测)*(var1的第n*100+1个观测)
求助循环代码

使用道具

板凳
pobel 在职认证  发表于 2013-2-2 20:14:52 |只看作者 |坛友微信交流群
楼主试一下下面代码。
data final;

  set a;
retain multi;
  if mod(code,100)=1 then multi=var1/var2;
var2=var2*multi;

run;
和谐拯救危机

使用道具

报纸
ilovekate 发表于 2013-2-2 20:28:26 |只看作者 |坛友微信交流群
pobel 发表于 2013-2-2 20:14
楼主试一下下面代码。
data final;
谢谢,可能我没表达清楚吧。
就是把每n个数据中(这n对每个系列可能不等,比如第一组可能是100个数据,第二组可能是140个数据,第3组可能是105个数据,等等)然后每一组的数据中所有的Var2变量都以该组第一个观测为基准,把Var2变量变成var2/(var2在该组中的第一个观测)*(var1在该组中的第一个观测)
code   var1     var2                     变化后          code var1  var2
1           5             100                                  1      5      5
2           6            120                                   2      6      6
3           4.5        90                                      3      4.5    4.5
4         4.5             90                                   4       4.5   4.5
。。。。                                                     .......
101      10            250                                  101    10   10
102      9             180                                  102      9    7.2

。。。。                                                    .....
201     13          300                                   201      13    13
202      14       279                                     202     14    12.09
。。。                                                     .....

使用道具

地板
qinly10 发表于 2013-3-31 16:07:54 |只看作者 |坛友微信交流群
你的表达是有些问题···不过我明白了,试试下面的程序,自己写drop和rename吧,呵呵
data have;
input code $ var1 var2;
code=substr(code,1,2);
cards;
001 5 100
002 6 120
003 4.5 90
004 4.5 90
101 10 250
102 9 180
201 13 300
202 14 279
203 16 308
;
proc sort data=have;
by code;
run;
data want;
set have;
by code;
retain v1 v2;
if first.code then do;
  v1=var1;
  v2=var2;
end;
var22=var2/v2*v1;
run;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-19 06:31