楼主: the_fly_winds
3415 7

SAS如何取每6个数据为一组。 [推广有奖]

  • 0关注
  • 1粉丝

博士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
1187 个
通用积分
6.3200
学术水平
16 点
热心指数
24 点
信用等级
14 点
经验
2330 点
帖子
105
精华
0
在线时间
257 小时
注册时间
2014-9-28
最后登录
2024-4-11

30论坛币
如标题。

数据源假如就是1,2,3,4,5,。。。

怎样将这些数每6个分到一组?

怎么将每7个分为一组?

每n个呢?

我知道有个 rank group代码,但是这个只能将数据分为多少组,不能指定每组有多少数据。

求大神帮忙!MUA!


最佳答案

l1i2n3i4n5g 查看完整内容

data test; do x=1 to 100; output; end; run; %let y=6; data test1; set test; n=_n_; retain group 0; if mod(n-1,&y.)=0 then group=group+1; run;
关键词:Group Rank RAN 数据源 如何 数据源
沙发
l1i2n3i4n5g 在职认证  发表于 2016-10-22 11:20:29 |只看作者 |坛友微信交流群
data test;
do x=1 to 100;
output;
end;
run;

%let y=6;
data test1;
set test;
n=_n_;
retain group 0;
if mod(n-1,&y.)=0 then group=group+1;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
the_fly_winds + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
紫月170 发表于 2017-12-8 11:41:02 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2016-10-22 11:20
data test;
do x=1 to 100;
output;
您好,请问一下,如果是循环取值怎么写呀?比如1-6分为一组,2-7分为一组,3-9,4-9...这样

使用道具

板凳
l1i2n3i4n5g 在职认证  发表于 2017-12-8 13:24:37 |只看作者 |坛友微信交流群
紫月170 发表于 2017-12-8 11:41
您好,请问一下,如果是循环取值怎么写呀?比如1-6分为一组,2-7分为一组,3-9,4-9...这样
/*建立测试数据集*/
data test;
   do x=1 to 100;
      output;
   end;
run;

%let y=6;   /*在此设置每组的观测数*/
data test1;
do group=1 to n;  /*根据要求可知分成n组(nobs=n)*/
   do i=1 to &y;  /*每组有y个观测*/
      p=group-1+i;   /*计算指针位置*/
      if group=n and i=&y then stop;   /*使用指针时,要用stop*/
      if p>n then continue;   /*最后几组观测数小于y,这一行与上一行不能交换位置*/
      set test nobs=n point=p;   /*获得数据集test的观测数为n,指针指向第p个观测*/
      output;
   end;
end;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
紫月170 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

报纸
紫月170 发表于 2017-12-8 13:57:52 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-8 13:24
data test;
do x=1 to 100;
output;
学习了,谢谢!!

使用道具

地板
紫月170 发表于 2017-12-8 14:56:13 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-8 13:24
/*建立测试数据集*/
data test;
   do x=1 to 100;
我还想再问一下,如果我的股票数据是按代码分组的,000001 一段000002一段....这样纵向连接的,这个循环分组能不能也按股票代码分,就是6个一组6个一组之后如果到了新的股票代码就停止,不要让不同的股票的值分进一个组里,可以吗?代码列名为daima  我是新手,不太会在您这个基础上改。。

使用道具

7
l1i2n3i4n5g 在职认证  发表于 2017-12-8 16:04:16 |只看作者 |坛友微信交流群
紫月170 发表于 2017-12-8 14:56
我还想再问一下,如果我的股票数据是按代码分组的,000001 一段000002一段....这样纵向连接的,这个循环分 ...
/*建立测试数据集*/
data test;
   do daima=600001 to 600003;
      do x=1 to 100;
         output;
      end;
   end;
run;

%let y=6;   /*在此设置每组的观测数*/
data test1;
retain temp_daima;
do group=1 to n;  /*根据要求可知分成n组(nobs=n)*/
   do i=1 to &y;  /*每组有y个观测*/
      p=group-1+i;   /*计算指针位置*/
      if group=n and i=&y then stop;   /*使用指针时,要用stop*/
      if p>n then continue;   /*最后几组观测数小于y,这一行与上一行不能交换位置*/
      set test nobs=n point=p;   /*获得数据集test的观测数为n,指针指向第p个观测*/
      if i=1 then temp_daima=daima;
      else if daima^=temp_daima then continue;
      output;
   end;
end;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
紫月170 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

8
紫月170 发表于 2017-12-8 16:54:01 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-8 16:04
/*建立测试数据集*/
data test;
   do daima=600001 to 600003;
好哒,灰常感谢!!太热心了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 03:41