楼主: l6397
1824 7

[问答] 求助:如何改变观测的位置? [推广有奖]

  • 0关注
  • 0粉丝

博士生

42%

还不是VIP/贵宾

-

威望
0
论坛币
120 个
通用积分
16.6418
学术水平
1 点
热心指数
6 点
信用等级
0 点
经验
3788 点
帖子
235
精华
0
在线时间
178 小时
注册时间
2007-3-28
最后登录
2023-5-13

楼主
l6397 发表于 2020-7-16 20:41:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有下列数据:data test;
        input x1-x10;
        datalines;
.        .        .        .        .        .        7        8        .        .
.        .        .        .        15        13        17        .        .        .
.        .        .        .        25        26        .        .        .        .
.        .        .        34        31        30        37        .        .        .
.        .        .        44        49        46        .        .        .        .
.        .        .        54        55        .        .        .        .        .
.        .        68        65        67        62        .        .        .        .
;
run;

想得到把有数据的观测,放到从右端开始的位置,不要改变每行观测的顺序。
x1        x2        x3        x4        x5        x6        x7        x8        x9        x10
.        .        .        .        .        .        .        .        7        8
.        .        .        .        .        .        .        15        13        17
.        .        .        .        .        .        .        .        25        26
.        .        .        .        .        .        34        31        30        37
.        .        .        .        .        .        .        44        49        46
.        .        .        .        .        .        .        .        54        55
.        .        .        .        .        .        68        65        67        62


谢谢各位!!
二维码

扫码加我 拉你入群

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

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

关键词:Input Lines Data test line

沙发
alextato 发表于 2020-7-28 16:46:31
  1. data x;
  2.     retain x3-x8 x9 x10 x1 x2;
  3.     set test;
  4. run;
复制代码

是想这样吗?

藤椅
whymath 发表于 2020-7-28 22:46:36
建议用数组。
  1. data test;
  2. input x1-x10;
  3. datalines;
  4. . . . . . . 7 8 . .
  5. . . . . 15 13 17 . . .
  6. . . . . 25 26 . . . .
  7. . . . 34 31 30 37 . . .
  8. . . . 44 49 46 . . . .
  9. . . . 54 55 . . . . .
  10. . . 68 65 67 62 . . . .
  11. ;
  12. run;

  13. data want;
  14.   set test;

  15.   array _x_ x1-x10;
  16.   do i = dim(_x_) to 1 by -1;
  17.     do j = dim(_x_) to i by -1 while(_x_[i] ^= .);
  18.       if _x_[j] = . then do;
  19.         _x_[j] = _x_[i];
  20.         _x_[i] = .;
  21.       end;
  22.     end;
  23.   end;
  24. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Cecilia_Xi + 5 + 1 + 1 + 1 精彩帖子

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

板凳
孤单的我们 发表于 2020-7-29 08:55:58
  1. data test;
  2.         set test;
  3.         call sortn(of x1-x10);
  4. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Cecilia_Xi + 5 + 1 + 1 + 1 精彩帖子

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

报纸
Cecilia_Xi 在职认证  发表于 2020-8-2 16:47:52
孤单的我们 发表于 2020-7-29 08:55
这个是只能升序排,没有办法达到楼主说的不改变变量位置

地板
孤单的我们 发表于 2020-8-7 10:59:51
Cecilia_Xi 发表于 2020-8-2 16:47
这个是只能升序排,没有办法达到楼主说的不改变变量位置
  1. data have;
  2. input x1-x10;
  3. datalines;
  4. . . . . . . 7 8 . .
  5. . . . . 15 13 17 . . .
  6. . . . . 25 26 . . . .
  7. . . . 34 31 30 37 . . .
  8. . . . 44 49 46 . . . .
  9. . . . 54 55 . . . . .
  10. . . 68 65 67 62 . . . .
  11. ;
  12. run;

  13. proc sql noprint;
  14.         select name into :valst separated by ',' from dictionary.columns where libname='WORK' and memname eq 'HAVE';
  15. quit;

  16. data want;
  17.         set have;
  18.         _temp=catx('|',&valst.);
  19.         _n=count(_temp,'|')+1;
  20.         call missing(&valst.);
  21.         array _a x1-x10;
  22.         do i=1 to _n ;
  23.                         _j=10-_n+i;
  24.                 _a[_j]=scan(_temp,i,'|');
  25.         end;
  26.        drop i _j _temp;
  27. run;
  28.        
复制代码

7
goodtolong 发表于 2020-9-2 11:05:26
看看这个行吗?
  1. data test2;      
复制代码

8
goodtolong 发表于 2020-9-2 11:20:56
不好意思没复制到。
  1. data test2;
  2.     set test;
  3.         array a(10) a1-a10;
  4.         array x(10) x1-x10;
  5.         do i=10 to 1 by -1;
  6.             a(i)=coalesce(of x10-x1);

  7.                 do y=10 to 1 by -1;
  8.                     if not missing(x(y)) then do;
  9.                             x(y)=.;
  10.                                 leave;
  11.                         end;
  12.                 end;
  13.         end;
  14.         keep a:;
  15. run;
复制代码

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

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