楼主: previal
1199 2

[原创博文] how many ways can we shift non-missing values left in an observation [推广有奖]

  • 1关注
  • 1粉丝

硕士生

46%

还不是VIP/贵宾

-

威望
0
论坛币
22 个
通用积分
0
学术水平
5 点
热心指数
6 点
信用等级
3 点
经验
645 点
帖子
93
精华
0
在线时间
138 小时
注册时间
2010-5-24
最后登录
2015-7-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
there are two ways:
data test;
  infile datalines truncover dsd dlm=' ';
  input t1 $ t2 $ t3 $ t4 $ t5 $;
datalines;
test1 test2 test3  . test5
. test2 test3 test4 test5
test1 . test3 . test5
test1 . .  test4 .
test1 test2 test3 test4 test5
;
run;

/* 1  Use ARRAY processing to assign non-missing values into new variables */
data shift1 (drop=t1-t5 j i);
  set test;
  array in t1-t5;
  array out $ o1-o5;
  j=1;
  do i=1 to 5;
    if in(i) ne ' ' then do;
      out(j)=in(i);
      j+1;
    end;
  end;
run;
proc print;
run;

/*2  using catx*/
%macro shift2;
proc contents data = test out = test1(keep = name) noprint;
run;
proc sql noprint;
select count(name) into: n from test1;
quit;
%let n=%eval(&n.);
data shift5;
set test;
t=catx('#',of t1-t&n);
%do i=1 %to &n;
t&i.=scan(t,&i.,'#');
%end;
drop t;
run;
%mend shift2;
%shift2;

只想到这两种方法,除了用array 和 catx,还有其他的方法吗?
二维码

扫码加我 拉你入群

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

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

关键词:observation observat missing values shift values

沙发
jingju11 发表于 2012-9-27 09:58:07 |只看作者 |坛友微信交流群
其实多少无所谓,因为你已经枚举了最好的两种。京剧

使用道具

藤椅
previal 发表于 2012-9-27 10:01:36 |只看作者 |坛友微信交流群
我还想找出尽可能多的方法来share,但是知识有限,求赐教!
I believe I can fly,and I can touch the sky!

使用道具

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

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

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

GMT+8, 2024-5-14 03:25