全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2849 5
2013-07-14
SAS新手。现遇到一个问题,简化如下:

假设数据长这样的:

M  T1 T2 T3 T4 T5 T6 T7
3  0   0    0   0   0   0   0
4   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0

现在要跟据M的取值给T1 - T9 赋值。规则如下:当 M = 3时,就给T1、T2、T3分别赋值1。其它为0;当M = 4 时,则T1 到T4都为1,其它为0。依此类推。


请问如何实现。我只会变量循环,搞了半天也搞不出观测值循环。。。。。。谢谢!!


二维码

扫码加我 拉你入群

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

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

全部回复
2013-7-14 23:22:58
复制代码
二维码

扫码加我 拉你入群

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

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

2013-7-15 08:56:42
SAS的循环,
对于变量,也就是横向的循环,在data步里要靠array来实现
对于观测,也就是纵向的循环,data步是自动完成的,也就是说在data步里写的语句,是要一个观测一个观测的逐一实现的
二维码

扫码加我 拉你入群

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

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

2013-7-15 11:30:18
yongyitian 发表于 2013-7-14 23:22
哎,好奇怪啊。我之前是在IF判断中以求和的方式做的,但结果是所有的T1-T9都被赋给了1值......也不知为啥。谢谢!
二维码

扫码加我 拉你入群

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

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

2013-7-15 11:30:56
playmore 发表于 2013-7-15 08:56
SAS的循环,
对于变量,也就是横向的循环,在data步里要靠array来实现
对于观测,也就是纵向的循环,data ...
谢谢。估计是我的判断语句有问题吧。。。
二维码

扫码加我 拉你入群

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

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

2013-8-3 15:22:24
data a(drop=i);
input M  T1 T2 T3 T4 T5 T6 T7;
array t(*) T1-T7;
do i=1 to M;
  t(i)=1;
end;
datalines;
3   0   0   0   0   0   0   0
4   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0
;
run;

proc print data=a;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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