作者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