楼主: 治感冒
2890 5

请教如何进行观测值循环? [推广有奖]

  • 1关注
  • 1粉丝

博士生

82%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0036
学术水平
2 点
热心指数
2 点
信用等级
1 点
经验
341 点
帖子
178
精华
0
在线时间
452 小时
注册时间
2007-3-9
最后登录
2020-1-8

楼主
治感冒 发表于 2013-7-14 22:51:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
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。依此类推。


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


二维码

扫码加我 拉你入群

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

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

关键词:观测值 如何实现 如何

本帖被以下文库推荐

  • · sas|主题: 59, 订阅: 14

沙发
yongyitian 发表于 2013-7-14 23:22:58
  1. data test;
  2. input M T1 T2 T3 T4 T5 T6 T7;
  3. datalines;
  4. 3  0   0   0   0   0   0   0
  5. 4  0   0   0   0   0   0   0
  6. 1  0   0   0   0   0   0   0
  7. run;

  8. data result;
  9.    set test;
  10.    array T{9} T1-T9;
  11.      do i = 1 to dim(T);
  12.        if i <= m then T(i) =1;
  13.         else T(i) =0;
  14.      end;
  15.    drop i;
  16. run;
复制代码

藤椅
playmore 发表于 2013-7-15 08:56:42
SAS的循环,
对于变量,也就是横向的循环,在data步里要靠array来实现
对于观测,也就是纵向的循环,data步是自动完成的,也就是说在data步里写的语句,是要一个观测一个观测的逐一实现的
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

板凳
治感冒 发表于 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 ...
谢谢。估计是我的判断语句有问题吧。。。

地板
jolterheadmmtt 发表于 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;

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

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