楼主: sasa1881
4304 8

[原创博文] 求助:如何根据某一变量将一数据集分为10个 [推广有奖]

  • 0关注
  • 1粉丝

已卖:297份资源

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
1410 个
通用积分
6.9349
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
1965 点
帖子
94
精华
0
在线时间
164 小时
注册时间
2008-7-24
最后登录
2014-5-5

楼主
sasa1881 发表于 2010-3-18 14:20:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如数据集a,有变量return,跟根据return的大小将数据集a分为10个数据集,如第一个数据集应包含min(return)+{max(return)-min(return)}/10的那些观测,第二个数据集应包含min(return)+2*{max(return)-min(return)}/10的那些观测。。。以此类推
二维码

扫码加我 拉你入群

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

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

关键词:数据集 RETURN turn RET Min return 如何

回帖推荐

soporaeternus 发表于3楼  查看完整内容

区间点上开闭没有认真考虑 希望对你有帮助

本帖被以下文库推荐

沙发
xiaosanmao 发表于 2010-3-18 15:32:03
第一个数据集应包含min(return)+{max(return)-min(return)}/10的那些观测
----------------------------------------------
对于固定好的一列return来说,上面的式子就是一个固定的数吧?也就是说生成10个数据集,每个数据集包含一个数呗?

藤椅
soporaeternus 发表于 2010-3-18 15:47:06
  1. %MACRO SPLIT(DATA,KEY,N);
  2.         proc sql;
  3.                 select max(&KEY),min(&KEY) into:max ,:min from &DATA;
  4.         quit;
  5.         %put &max &min;
  6.         data
  7.                 %do i=1 %to &N %by 1;
  8.                         a_&i
  9.                 %end;
  10.         ;
  11.                 set &DATA;
  12.                 Flg=ceil((&key-&min)/((&max-&min)/&N));
  13.                 %do i=1 %to &N %by 1;
  14.                         %if &i>=2 %then %do;else%end;
  15.                         if Flg=&i then output a_&i;
  16.                 %end;
  17.                 drop Flg;
  18.         run;

  19. %MEND SPLIT;
  20. %SPLIT(a,return,100);
复制代码
区间点上开闭没有认真考虑
希望对你有帮助
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

Let them be hard, but never unjust

板凳
sasa1881 发表于 2010-3-18 16:08:39
2# xiaosanmao
运行结果出现错误如下:

NOTE: 由宏变量 "Z2" 生成行。
1     (&z3-)*0.1
       -
       22
WARNING: Apparent symbolic reference Z3 not resolved.
NOTE 138-205: 由宏变量 "Z2" 生成行。
1     (&z3-)*0.1
           -
           22
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT, PUT.

报纸
sasa1881 发表于 2010-3-18 16:10:11
3# soporaeternus 运行结果出现错误如下NOTE: 由调用宏 "SPLIT" 生成行。2057                                                        19.    20.                                                            ---                                                            180ERROR 180-322: 语句无效或未按正确顺序使用。

地板
soporaeternus 发表于 2010-3-18 16:21:29
log多点我看看,我这边没错啊~~
Let them be hard, but never unjust

7
sasa1881 发表于 2010-3-18 16:32:41
1255     1. %MACRO SPLIT(DATA,KEY,N);
1256     2.         proc sql;
1257     3.                 select max(&KEY),min(&KEY) into:max ,:min from &DATA;

1258     4.         quit;
1259     5.         %put &max &min;
1260     6.         data
1261     7.                 %do i=1 %to &N %by 1;
1262     8.                         a_&i
1263     9.                 %end;
1264    10.         ;
1265    11.                 set &DATA;
1266    12.                 Flg=ceil((&key-&min)/((&max-&min)/&N));
1267    13.                 %do i=1 %to &N %by 1;
1268    14.                         %if &i>=2 %then %do;else%end;
1269    15.                         if Flg=&i then output a_&i;
1270    16.                 %end;
1271    17.                 drop Flg;
1272    18.         run;
1273    19.
1274
1255     1. %MACRO SPLIT(DATA,KEY,N);
         --
         180
ERROR 180-322: 语句无效或未按正确顺序使用。

1275    20. %MEND SPLIT;
1276    21. %SPLIT(test,dsmvtll,228);

NOTE: 由调用宏 "SPLIT" 生成行。
1                              3.                 select max(&KEY),min(&KEY) into:max ,:min from &DATA;
                               --
                               180

ERROR 180-322: 语句无效或未按正确顺序使用。

NOTE: 由调用宏 "SPLIT" 生成行。
1                                                                                                          4.         quit;
                                                                                                           --
                                                                                                           180

ERROR 180-322: 语句无效或未按正确顺序使用。

WARNING: Apparent symbolic reference MAX not resolved.
WARNING: Apparent symbolic reference MIN not resolved.
&max &min
NOTE: 由调用宏 "SPLIT" 生成行。
1      2.         proc sql;    3.                 select max(&KEY),min(&KEY) into:max ,:min from &DATA;    4.         quit;    5.
                                                                                                                               --

180
ERROR 180-322: 语句无效或未按正确顺序使用。


NOTE: 由调用宏 "SPLIT" 生成行。
689                      11.                 set &DATA;
                         ---
                         180

ERROR 180-322: 语句无效或未按正确顺序使用。

WARNING: Apparent symbolic reference MIN not resolved.
WARNING: Apparent symbolic reference MAX not resolved.
WARNING: Apparent symbolic reference MIN not resolved.
NOTE: 由调用宏 "SPLIT" 生成行。
689                                                       12.                 Flg=ceil((&key-&min)/((&max-&min)/&N));
                                                          ---
                                                          180

ERROR 180-322: 语句无效或未按正确顺序使用。

NOTE: 由调用宏 "SPLIT" 生成行。
689      10.         ;   11.                 set &DATA;   12.                 Flg=ceil((&key-&min)/((&max-&min)/&N));   13.
                                                                                                                        ---
                                                                                                                        180
ERROR 180-322: 语句无效或未按正确顺序使用。

8
soporaeternus 发表于 2010-3-18 16:50:56
会不会是1、2、3...行号也粘过去的原因
我怎么粘不过去......
Let them be hard, but never unjust

9
sasa1881 发表于 2010-3-18 17:08:56
感谢soporaeternus,程序运行成功!!!

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

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