楼主: austin510
1157 2

[问答] 关于自动变量_n_的困惑,恳请高手解释以下 [推广有奖]

  • 0关注
  • 0粉丝

大专生

31%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
395 点
帖子
37
精华
0
在线时间
55 小时
注册时间
2005-9-4
最后登录
2014-5-5

楼主
austin510 发表于 2013-1-31 12:04:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据集ctargets见下表

year

jan

feb

……

dec

  

1997

  
  

192284420

  
  

86376721

  
  

……

  
  

136042505

  
  

1998

  
  

108645734

  
  

147656369

  
  

……

  
  

24901752

  
  

1999

  
  

85730444

  
  

7416840

  
  

……

  
  

181668256

  
其作用在于根据年份和月份确定唯一的一个数值,比如说,1997年和jan(一月)所对应的数值为192284420,
数据集monthsum见下表

id

year

monthno

  

1

  
  

1997

  
  

1

  
  

2

  
  

1998

  
  

4

  
  

3

  
  

1999

  
  

12

  
现在需要生成一个新数据集lookup,它在数据集monthsum的基础上增加一个变量ctarget,其值根据变量year和monthno的值
查询数据集ctargets来确定,一个自然的想法是将数据集ctargets的数据存储在一个多维数组里,代码如下:
  1. data lookup;
  2.         array targets{1997:1999,12} _temporary_;
  3.             if _n_=1 then do i=1 to 3;
  4.                         set ctargets;
  5.                         array mnth{*} jan--dec;
  6.                         do j=1 to dim(mnth);
  7.                                     targets{year,j}=mnth{j};
  8.                         end;
  9.             end;
  10.             set monthsum(keep=id year monthno);
  11.             ctarget=targets{year,monthno};
  12. run;
复制代码
程序的大体流程我还是看懂了,以后碰到类似的问题照葫芦画瓢也行,现在正纠结于程序中的红色代码部分,
《SAS编程与数据挖掘商业案例》将_n_解释为“指向对应的某条观测”,那么然后将set ctargets运行三次,连续读取了数据集ctargets的三条观测,这样一来感觉有矛盾。
还请高手交代一下_n_真正的含义,不胜感激。



二维码

扫码加我 拉你入群

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

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

关键词:TEMPORARY Targets Target months lookup 困惑

沙发
pobel 在职认证  发表于 2013-1-31 12:10:24
_n_简单来说,就是data --- run;执行的圈数。
开始执行时 _n_=1;
data步执行到run语句,返回data语句继续执行时_n_+1;
和谐拯救危机

藤椅
falconwong123 发表于 2013-1-31 13:35:05
_n_简单来说,就是data --- run;执行的圈数。
开始执行时 _n_=1;
data步执行到run语句,返回data语句继续执行时_n_+1;

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

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