全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2456 5
2017-08-01


微信截图_20170801154626.png
大家好,我请问一个问题。

就是我的数据集如图片所示这个样子,我希望能按照第6行那行观测值的大小来删除相应变量,就是比如一个变量第6行的观测值大于1.5,那么就保留这列变量,如果小于1.5则删除这列变量。

我的数据集中大概有60多个变量,这个要怎么写宏来循环进行删除呢?

谢谢大家!




二维码

扫码加我 拉你入群

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

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

全部回复
2017-8-1 22:17:35
继续求大神帮忙
二维码

扫码加我 拉你入群

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

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

2017-8-2 10:29:04
array a[n] b[n]; *n是你的60多个变量数;
if _n_=6;
do i= 1 to n;
if a[i]>1.5 then
b[i]=vname(a(i));
end;
然后把b[i]的值select into 宏separated by空格就好。
后面修改dataset,keep宏。
二维码

扫码加我 拉你入群

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

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

2017-8-2 22:21:46
popodan 发表于 2017-8-2 10:29
array a[n] b[n]; *n是你的60多个变量数;
if _n_=6;
do i= 1 to n;
您好,谢谢回复!

我大概明白您的意思,但是我还是不大会写。。。我把数据截取了几个变量,放在附件里面了,可以请您方便的话帮我写一下吗?

感谢啊!!!

testdata.zip
大小:(10.8 KB)

 马上下载


二维码

扫码加我 拉你入群

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

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

2017-8-3 01:52:38
你发的这个里是me-ivc_6 四个变量需要检测,假设取第六行看值是不是大于1.6,代码如下:
data a;
set test;
if _n_=6;
array a[*] me--ivc_6;
array b[4] $;
do i=1 to dim(a);
if a[i]>1.6 then
b[i]=vname(a[i]);
end;
keep b:;
run;

proc transpose data=a out=b;
var b1-b4;
run;

proc sql;
select col1 into : vname separated by ' ' from b;
quit;

data new;
set test;
keep x &vname;
run;

然后就得到了四列,最后一列因为不符合大于1.6没有keep。
二维码

扫码加我 拉你入群

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

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

2017-8-3 20:54:42
popodan 发表于 2017-8-3 01:52
你发的这个里是me-ivc_6 四个变量需要检测,假设取第六行看值是不是大于1.6,代码如下:
data a;
set tes ...
非常感谢您!现在可以用了!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群