作者faaar (祈祷~~)
看板Statistics
标题[问题] 请问SAS变项删除问题?
时间Thu Jun 4 20:26:48 2009
请问一下,我有两笔资料…
格式简略如下
DATA A
ID X Y Z
A 1 . 2
B . . .
C . . .
DATA B
ID X Y Z
D 0 . 1
E . . 2
F 1 . 0
G . . .
合并之後资料如下
DATA AB
ID X Y Z
A 1 . 2
B 1 . .
C . . .
D 0 . 1
E . . 2
F 1 . 0
G . . .
我想要把所有资料都是missing的Y变项删除(其他变项有missing没关系)
变成如下所示的资料内容(只留下X和Z)
DATA AB
ID X Z
A 1 2
B 1 .
C . .
D 0 1
E . 2
F 1 0
G . .
试过直接用IF条件式+DROP,但SAS都报错...Orz..
也试过Transpose先将资料变项反转,
但因为变项资料都是missing,所以无法加总然後DELETE
因为其实data和变项很多,无法一一用EXCEL先筛选出来。
请问有什麽SAS函数或语法可以参考吗?要怎麽写呢?
麻烦大家了~感谢!
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.66.141.253
※ 编辑: faaar 来自: 203.66.141.253 (06/04 20:28)
1F:推 qooly:不太懂你的意思,如果是有missing的列要删除,就写成 06/04 21:50
2F:→ qooly:if X=. or Y=. or Z=. then delete; 06/04 21:51
我想做的是直行的变项删除,而不是横列的观察值删除..@@'
3F:推 SKedDie:可以借这篇问一个类似的问题吗@@ 06/04 23:41
4F:→ SKedDie:如果想把所有变项大於或小於某值都删除 该如何写呢?感恩 06/04 23:42
※ 编辑: faaar 来自: 203.66.141.253 (06/05 10:00)
5F:→ kingbee:drop Y; 不就可以去掉你不要的Y变相了吗? 06/05 10:19
6F:→ kingbee:你把你的语法写出来给大家检是比较快吧 06/05 10:19
其实我的语法只是将data a 和 data b set在一起,
data ab;
set a b;
接下来就不知道该怎麽写了
之所以无法用DROP先将Y删除是因为
实际上我有很多个资料及和变项...要先set完後汇集所有资料之後
再判断有哪些变项是全部观察值都missing...必须删除
我有试着先将每个data transepose...想先挑出都是missing的变项
proc transepose data=a out=aa;
run;
data aa;set aa;
if COL1=. and COL2=. and COL3=. then 新变项等於1;
再去做筛选,但因为观察值转置变项有很多个,无法用上面的IF 条件式 一一写出。
且因为是missing value,所以无法加总
因此想来求助大家有什麽方便的语法?
7F:→ kingbee:to Ske: 要大於或小於 仅差在於 > = < 这三种符号的应用 06/05 10:20
※ 编辑: faaar 来自: 203.66.141.253 (06/05 13:28)
8F:推 tew:办不到 drop 是把y变项整个删掉 既然删掉了 那怎麽会出现 06/05 13:34
9F:→ tew:既然你要保留y变项 其他有数据的 那一定会看到缺值 06/05 13:34
10F:→ tew:所以你的逻辑有很大的问题 Y是missing 就要drop y 06/05 13:35
11F:→ tew:那没有missing value要怎麽保留下来 06/05 13:36
12F:→ tew:有值得要保留Y missing value的不保留Y 那你要怎样呈现资料 06/05 13:37
13F:→ tew:你应该看看你其他的Y是不是有资料 有资料 那Y就只能保留 06/05 13:39
是的..我现在就是不知道该如何判断我所有资料的Y是不是都是missing的..
若Y是有资料的(就算只有一笔)也要保留
若Y全都是missing,则我至少要能先挑出他,才能後续DROP他
14F:推 tew:如果是要把所有是missing的资料删掉 06/05 13:47
15F:推 tew:if nmiss(a,b,c,d,e)=5 then delete; 06/05 13:48
16F:→ tew:意思是如果a b c d e的遗漏值为5 就删掉 06/05 13:48
先谢谢版大的回覆,我的逻辑其实是这样的
我有两百多个data 每个data 都有数十个变项不等
我将所有data set 在同一个资料後
需要进一步判断,有哪些变项其所有的观察值都是missing,然後将这些变项删除
但我不知道这样我的语法要怎麽写@@
另外,请问版大
if nmiss(a,b,c,d,e)=5 then delete;
这行指令如果变项顺序是连续的,例如X1-X100,可以有其他写法吗?
再麻烦指点一下了~感谢!
※ 编辑: faaar 来自: 203.66.141.253 (06/05 14:29)
※ 编辑: faaar 来自: 203.66.141.253 (06/05 14:34)
17F:推 tew:应该可以吧 nmiss(of x1-x100) 06/05 18:55