楼主: 白塔湖123
2506 5

[问答] 求问SAS如何按照某一行观测值大小来循环删除相应变量? [推广有奖]

  • 2关注
  • 6粉丝

已卖:2138份资源

教授

1%

还不是VIP/贵宾

-

威望
0
论坛币
22330 个
通用积分
2.8031
学术水平
3 点
热心指数
20 点
信用等级
3 点
经验
5284 点
帖子
286
精华
0
在线时间
1683 小时
注册时间
2012-9-20
最后登录
2025-11-21

楼主
白塔湖123 发表于 2017-8-1 15:52:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


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

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

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

谢谢大家!




二维码

扫码加我 拉你入群

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

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

关键词:观测值 多个变量 数据集 大于1 大家好

回帖推荐

popodan 发表于5楼  查看完整内容

你发的这个里是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>1.6 then b=vname(a); 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 人评分热心指数 收起 理由
eijuhz + 2 鼓励积极发帖讨论

总评分: 热心指数 + 2   查看全部评分

沙发
白塔湖123 发表于 2017-8-1 22:17:35
继续求大神帮忙

藤椅
popodan 在职认证  发表于 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宏。
已有 1 人评分热心指数 收起 理由
eijuhz + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

板凳
白塔湖123 发表于 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)

报纸
popodan 在职认证  发表于 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。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
eijuhz + 2 + 2 + 2 热心帮助其他会员

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

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

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

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