楼主: syyw
5605 6

[原创博文] 怎么求一个变量的累积变量,并生成新变量? [推广有奖]

  • 1关注
  • 0粉丝

本科生

14%

还不是VIP/贵宾

-

威望
0
论坛币
1541 个
通用积分
31.2023
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1381 点
帖子
36
精华
0
在线时间
124 小时
注册时间
2009-6-8
最后登录
2024-11-25

楼主
syyw 发表于 2010-4-18 20:21:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
弱问个问题:我的数据集里有个变量sum,我想求它的累计值,并生成新变量sum1,在sas里怎么实现呢?如何编程呢?
r               cN Obs    SUM sum1
1112841825789.21  …
2124541553266.96  …
3129321409067  …
41453491324.36  …
51851684680.5  …
二维码

扫码加我 拉你入群

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

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

关键词:新变量 Sum 数据集 obs 如何

回帖推荐

edumetric 发表于2楼  查看完整内容

data temp; input r c nobs sum; datalines; 1 1 1284 1825789.21 2 1 2454 1553266.96 3 1 2932 1409067 4 1 453 491324.36 5 1 851 684680.5 ; run; data temp1; set temp; retain sum1; sum1+sum; run; proc print data=temp1; run;

crackman 发表于3楼  查看完整内容

data a(drop=n1-n5); input a@; n1=lag(a); n2=lag2(a); n3=lag3(a); n4=lag4(a); n5=lag5(a); n=sum(of n1-n5,a); cards; 12 34 23 54 123 4565 ; run; 这个只是一个测试程序 如果观测数很多的话 写一个宏 循环就可以了

本帖被以下文库推荐

沙发
edumetric 发表于 2010-4-18 20:30:35
data temp;
input r c nobs sum;
datalines;
1        1        1284        1825789.21
2        1        2454        1553266.96
3        1        2932        1409067
4        1        453        491324.36       
5        1        851        684680.5
;
run;

data temp1;
set temp;
retain sum1;
sum1+sum;
run;
proc print data=temp1;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
syyw + 1 + 1 + 1 好的意见建议

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
crackman 发表于 2010-4-18 20:34:21
data a(drop=n1-n5);
input a@;
n1=lag(a);
n2=lag2(a);
n3=lag3(a);
n4=lag4(a);
n5=lag5(a);
n=sum(of n1-n5,a);
cards;
12
34
23
54
123
4565
;

run;
这个只是一个测试程序
如果观测数很多的话 写一个宏 循环就可以了
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
syyw + 1 + 1 + 1 好的意见建议

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
syyw 发表于 2010-4-18 20:47:39
谢谢指教!!!

报纸
crackman 发表于 2010-4-18 21:36:00
2# edumetric
比我写的好

地板
viterbi 发表于 2010-4-20 10:23:50
edumetric 发表于 2010-4-18 20:30
data temp;
input r c nobs sum;
datalines;
1        1        1284        1825789.21
2        1        2454        1553266.96
3        1        2932        1409067
4        1        453        491324.36        
5        1        851        684680.5
;
run;

data temp1;
set temp;
retain sum1;
sum1+sum;
run;
proc print data=temp1;
run;
貌似不用retain语句也行的。

7
crackman 发表于 2010-4-20 16:12:34
是的
不需要retain
其实这个语句
sum1+sum
等价于
retain sum1;
sum1=sum1+sum;
我是这样理解的

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 20:46