楼主: lnlhckao123
1136 7

[问答] 200论坛币求请问怎样删除变量 [推广有奖]

  • 0关注
  • 3粉丝

副教授

61%

还不是VIP/贵宾

-

威望
0
论坛币
14832 个
通用积分
9.1001
学术水平
7 点
热心指数
4 点
信用等级
4 点
经验
12566 点
帖子
754
精华
0
在线时间
399 小时
注册时间
2010-8-21
最后登录
2024-2-8

200论坛币
请问高手,怎样删除变量,除了用select    from与retain语句,假如原变量很多,用前面的语句就比较麻烦,要一一列出要的变量,如果能直接删除少数几个变量,则proc过程就比较简单,请高手给出例子,谢谢!

最佳答案

yongyitian 查看完整内容

data old; input a1-a20; datalines; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; data new1; set old; drop a18 a19 a20; run; /* or */ data new2 (drop=a18 a19 a20); set old; run;
关键词:200论坛币 0论坛币 论坛币 RETAIN Select
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!
沙发
yongyitian 发表于 2013-5-1 23:17:53 |只看作者 |坛友微信交流群
data old;
input a1-a20;
datalines;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
;

data new1;
   set old;
   drop a18 a19 a20;
run;

/* or */
data new2 (drop=a18 a19 a20);
     set old;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 3 + 2 + 4 热心帮助其他会员

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

使用道具

藤椅
95252580 发表于 2013-5-1 23:29:28 |只看作者 |坛友微信交流群
好难
有困难要上,没有困难创造困难也要上

使用道具

板凳
lnlhckao123 发表于 2013-5-1 23:31:32 |只看作者 |坛友微信交流群
谢谢95252580帮顶!不过高手还是很多的!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

报纸
ariman911 发表于 2013-5-1 23:47:10 |只看作者 |坛友微信交流群
drop放在set後面比較好喔
set old  (drop=a18 a19 a20);

使用道具

地板
lnlhckao123 发表于 2013-5-1 23:50:04 |只看作者 |坛友微信交流群
请问ariman911,为什么drop放在set後面比較好喔?谢谢!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

7
ariman911 发表于 2013-5-1 23:54:45 |只看作者 |坛友微信交流群
放在set後面當option,資料不會進入PDV
放在data當option或是用drop statement
則是資料都放入PDV後,才drop
除非你還要使用這些變數ex計算
不然這樣(放在set後)是比較有效率的
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 分析的有道理

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

使用道具

8
rdwalk 发表于 2013-5-2 00:01:00 |只看作者 |坛友微信交流群
假设原数据集test中变量名为a b c d e f g h。。。。。。要删除的变量相对于所有变量较少的话,用drop=(要删除的变量);要删除的变量相对于所有变量较多的话,用keep=(要保留的变量)。

data del;
  set test(drop=b g);
run;
这种方法比下面的方法
data del;
   set test;
   drop=b g;
run;

data del(drop=b g);
   set test;
run;
效率高,因为在读取test时已经把b g去掉了,而后两种方法需要把test完全读完再把b g去掉,其实后两种方法效率一样。keep=也是一样,第一种方法效率高。
这是data步直接删除变量的方法,也有间接删除,即满足一定条件再删除的,要看实际需要。

proc sql;
   alter test
   add/drop b g;
quit;
也可,效率较低。

还有一些方法,一时想不起来。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 分析的有道理

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

使用道具

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

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

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

GMT+8, 2024-4-28 19:21