楼主: yz830215
1466 9

菜鸟请教高手!!谢谢 [推广有奖]

  • 0关注
  • 0粉丝

大专生

66%

还不是VIP/贵宾

-

威望
0
论坛币
107 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1628 点
帖子
33
精华
0
在线时间
71 小时
注册时间
2008-3-5
最后登录
2016-6-3

楼主
yz830215 发表于 2009-6-3 14:09:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

我想删除重复的OBS用proc sort   nodup,就可以

我的问题是按数据集中所有的变量,但是不包含某一个变量,以这样的基准来判断是否重复并删掉?

我知道一个笨办法是,假设有n个变量

proc sort data nodupkey;

by var_1 var_2 ......var_n-1;

run;

请问高手,有没简单点的语句,如果我的变量很多,一个一个打出来太痛苦了.

 

二维码

扫码加我 拉你入群

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

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

关键词:请教高手 NODUPKEY Data 我的问题 VaR 请教 高手 菜鸟

回帖推荐

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

proc contents data=sashelp.class noprint out=class_var;run;proc sql noprint;select count(*) into:nvarfrom class_varwhere type eq 2;quit;%put &nvar;proc sql noprint;select name into:m_var separated by ' 'from class_varwhere type eq 2;quit;%put &m_var;data nkwilling;set sashelp.class;array ar(&nvar) &m_var;array new_ar(&nvar) $;do i=1 to &nvar;new_ar(i)=ar(i);end;drop i;run;%macro sort;% ...

本帖被以下文库推荐

沙发
simon0563 发表于 2009-6-3 14:34:00
自己做个小库试验啊. 我也不知道

藤椅
realgod5417 发表于 2009-6-3 14:46:00

by var1--varn;

中间用两个-

梅须逊雪三分白雪却输梅一段香

板凳
yz830215 发表于 2009-6-3 15:31:00

那如果我的变量名字很乱,没有一定规律,这个该如何是好啊,谢谢,急啊..

报纸
nkwilling 发表于 2009-6-3 16:02:00

proc contents data=sashelp.class noprint out=class_var;
run;

proc sql noprint;
select count(*) into:nvar
from class_var
where type eq 2
;
quit;

%put &nvar;

proc sql noprint;
select name into:m_var separated by ' '
from class_var
where type eq 2
;
quit;

%put &m_var;

data nkwilling;
set sashelp.class;
array ar(&nvar) &m_var;
array new_ar(&nvar) $;
do i=1 to &nvar;
new_ar(i)=ar(i);
end;
drop i;
run;

%macro sort;
%do m=1 %to &nvar;

proc sort data=nkwilling nodupkey out=nkwilling_&m;
by %do i=1 %to &m;new_ar&i %end;;
run;

%end;
%mend sort;

%sort;

看看是不是你想要的。


已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
yz830215 发表于 2009-6-3 16:51:00
太感谢了.先谢过了再看,光看这程序就知道是高手了.

7
nkwilling 发表于 2009-6-3 19:40:00
没关系,只要不是太耽误别人的时间,还是有人愿意给你解决的。另外,提个小小的建议,请最好不要用请教高手这类标题,那样会很少吸引别人的注意。如果你能用“求助:关于proc sort”,那我估计人气会高点。解决问题的机会也就多点。

8
456852 发表于 2009-6-4 01:49:00
你在写
"by 变量A--变量B"
的时候,SAS会看数据集里所有从变量A到变量B的变量,但要记得,是按照数据集的顺序来排的。
比如:
data xx;
input aa av ag ae;
cards;
1 2 3 4
1 2 3 6
2 2 3 4
3 4 5 6
3 5 6 1
;
proc sort data=xx nodupkey;by aa--ag;run;
proc print;run;
结果:
Obs aa av ag ae
1      1  2   3   4
2      2  2   3   4
3      3  4   5   6
4      3  5   6   1

9
yz830215 发表于 2009-6-4 11:37:00

恩,多谢大侠建议,受教

10
yz830215 发表于 2009-6-4 12:00:00
这个方法比较简单,我试试哈,谢谢啦

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 23:11