全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1592 3
2011-04-14
我的数据大概是Name,t1,t2,t3,t4,t5,t6
a,791.51,791.51,786.82,786.82,786.82,786.82
b,3470.4,5076.69,5156.02,5156.02,5156.02,5156.02
c,662.51,562.89,622.66,622.66,627.64,602.74
d,690.89,842.88,735.79,632.16,711.61,822.15
e,560.2,563.44,586.11,578.33,591.4,588.14
f,359.16,369.13,359.16,369.13,369.13,369.13
g,766.56,766.56,739.66,732.94,706.04,672.42

我希望能够生成几个新的变量,new1=t2/t1 -1, new2=t3/t2 -1, new3=t4/t3 -1, new4= t5/t4 -1, new6=t6/t5-1, new7= t6/t1 -1,
请问这样的除了一个一个写公式,还有什么简便的方法吗?因为数据比较大,写起来太费时间了。

谢谢各位了!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-14 17:36:15
没看出规律
前面几个是
复制代码
二维码

扫码加我 拉你入群

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

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

2011-4-14 17:52:10
恩,经你这么一提醒,可以试试循环,呵呵~
soporaeternus 发表于 2011-4-14 17:36
没看出规律
前面几个是
复制代码

二维码

扫码加我 拉你入群

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

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

2011-4-15 06:41:25
3# ccgzl

data circle;
infile datalines dsd;
input name $ t1-t6 ;
datalines;
a,791.51,791.51,786.82,786.82,786.82,786.82
b,3470.4,5076.69,5156.02,5156.02,5156.02,5156.02
c,662.51,562.89,622.66,622.66,627.64,602.74
d,690.89,842.88,735.79,632.16,711.61,822.15
e,560.2,563.44,586.11,578.33,591.4,588.14
f,359.16,369.13,359.16,369.13,369.13,369.13
g,766.56,766.56,739.66,732.94,706.04,672.42
;
run;

data b;
set circle;
array new(*) new1-new6;
array t(*) t1-t6;
i=
1;
do while (i< dim(t));
j=i+
1;
new(i)=t(j)/t(i)-
1;
i+
1;
end;
new(dim(new))=dim(t)/t(
1)-1;
drop i j;
run;

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群