楼主: today米虫
5213 6

[问答] 如何将SAS一行的变量两两比较大小,然后将小的输出到另一个数据集 [推广有奖]

  • 0关注
  • 0粉丝

高中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
858 点
帖子
10
精华
0
在线时间
20 小时
注册时间
2017-10-18
最后登录
2019-3-27

楼主
today米虫 发表于 2018-1-15 09:44:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data score;
    array col {100} col1-col100;
    do row =1 to 10;
        do i=1 to 100;
        col(i)=int(uniform(7)*100);
        end;
    end;
    drop row i;
run;
让两两比较小的结果输出到test数据集
二维码

扫码加我 拉你入群

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

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

关键词:数据集 Uniform array score core

沙发
流水不朽 发表于 2018-1-15 09:58:02
既然是两两比较取最小,是不是反过来看,全部变量比较,取最大的保留?
你看这是不是你所考虑的结果?

藤椅
today米虫 发表于 2018-1-15 10:15:16
流水不朽 发表于 2018-1-15 09:58
既然是两两比较取最小,是不是反过来看,全部变量比较,取最大的保留?
你看这是不是你所考虑的结果?
我要到结果是将两两比较后将最小值保留,比如第一列col1 与col2比较后输出到test然后col2与col3比较小的输出到test以此类推。

板凳
流水不朽 发表于 2018-1-15 10:32:07
其实我的意思是,你这样循环的比较,最终剩下的不就是最大的没 输出到test里面?那反过来,不就是只是取最大的,要么把最大的踢掉,剩下的不就是test想要的结果?
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
舍身卫道 发表于 2018-1-15 11:02:39
不知道这个结果是楼主要的吗?
  1. data score;
  2.     array col {100} col1-col100;
  3.     do row =1 to 10;
  4.         do i=1 to 100;
  5.         col(i)=int(uniform(7)*100);
  6.         end;
  7.     end;
  8.     drop row i;
  9. run;

  10. proc transpose data=score out=score1;
  11. var _numeric_;
  12. run;

  13. data test;
  14.         set score1;
  15.         lag_data=lag(col1);
  16.         if col1>=lag_data then rslt=lag_data;
  17.         else rslt=col1;
  18.     if rslt^=.;
  19.         keep rslt;
  20. run;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

地板
xiami2000 在职认证  发表于 2018-1-30 00:19:25
Your question is not clear. If you only want one output for the minimun value for each row, then only need MIN function, such as:

data test;
        set score;
        min=min(of col1-col100);
        keep min;
run;

If you want a dataset to for the each comparasion result, then you need ARRAY to do it. The sample code is below:

data test;
        set score;
        array col {100} col1-col100;
        array test {99} test1-test99;
                do i=2 to 100;
                        test(i-1)=min(col(i-1),col(i));
                end;
        keep test:;
run;

GOOD LUCK
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

7
384390412 发表于 2018-1-30 11:06:20
xiami2000 发表于 2018-1-30 00:19
Your question is not clear. If you only want one output for the minimun value for each row, then onl ...

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-27 23:15