全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3116 7
2013-08-24
悬赏 1 个论坛币 未解决
我要做48次循环,对应2009.1——2012.12共48个月,在循环中我需要&年份和&月份,因此我需要将i ——>a=年份 b=月份
具体如下:
i         yr        mnth
1      2009    1
13    2010    1
...
我编了循环如下:
%macro xdata;
%do j=1 to 48;
%let yr=int(input(&j)/12));                //我尝试将 i 转换为年份和月份
%let mnth=&j-12*yr;
data datatemp;
set datam;
if year>=&yr and month>=&mnth then delete;  //这里我引用到了年份和月份
run;
%mend;
%xdata
这样编有两个问题:1.上面我的尝试被拒绝了 2.即便宏变量赋值成功,我怀疑这两个变量是字符型的,无法进行大小比较
期待任何评论和建议!

易丹 2013-08-24

二维码

扫码加我 拉你入群

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

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

全部回复
2013-8-24 18:24:15
不会呀
二维码

扫码加我 拉你入群

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

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

2013-8-24 23:51:05
你把你的要求写明白些  或者我可以帮到你 你是要将数据集中的年份与月份与循环中的年份月份比较?
二维码

扫码加我 拉你入群

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

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

2013-8-25 11:57:45
不是很明白你需要的是什么,
第一个是你的do语句没有end语句,

第二个我猜是你想生成48个data,那样的话,连datatemp都要加上datatemp&j


%macro xdata;
%do j=1 to 48;
%let yr=int(input(&j)/12));                //我尝试将 i 转换为年份和月份
%let mnth=&j-12*yr;
data datatemp;
set datam;
if year>=&yr and month>=&mnth then delete;  //这里我引用到了年份和月份
run;
%mend;
%xdata
二维码

扫码加我 拉你入群

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

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

2013-8-25 16:29:14
gongxun1234 发表于 2013-8-24 23:51
你把你的要求写明白些  或者我可以帮到你 你是要将数据集中的年份与月份与循环中的年份月份比较?
在一个总数据的excel里面有2008年1月到2012年12月的所有数据,变量有年份和月份(皆为num.),我想用每次循环i指代从2009年1月开始算的第i个月,以i=1为例,指代2009年1月,在这次循环中我要删除2009年1月之后的所有观测,形成一个新的数据集,因此需要把宏变量i生成新变量year 和month。
不知道说明白了不?
二维码

扫码加我 拉你入群

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

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

2013-8-25 16:31:52
tangliang0905 发表于 2013-8-25 11:57
不是很明白你需要的是什么,
第一个是你的do语句没有end语句,
对第二个问题,嗯,我不需要生成48个数据集,事实上我需要把每次循环处理过后的数据集合并,所以只要两个数据集做中间过渡用
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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