2013-05-06 28 views
-2

我有以下數據集:數據集操控,替代

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
    1: NA NA NA NA NA NA NA NA NA NA 
    2: NA NA NA NA NA NA NA NA NA NA 
    3: NA NA NA NA NA NA NA NA NA NA 
    4: NA NA NA NA NA NA NA NA NA NA 
    5: NA NA NA NA NA NA NA NA NA NA 
    ---          
3180: NA NA NA NA NA NA NA NA NA NA 
3181: NA NA 185 NA NA NA NA NA NA NA 
3182: 151 162 162 157 150 NA 162 162 NA NA 
3183: NA NA NA NA NA NA NA NA NA NA 
3184: 153 NA NA NA NA NA NA NA NA NA 

我想用1來代替所有的174的,然後再設置其他一切等於0 這是我的代碼:

sibling=data.table(cbind((data[,'b16aa']),(data[,'b16ba']),(data[,'b16ca']),(data[,'b16da']),(data[,'b16ea']), (data[,'b16fa']),(data[,'b16ga']),(data[,'b16ha']),(data[,'b16ia']),(data[,'b16ja']))) 
sibling[sibling == 174] <-1 

但是輸出是:

> sib1 
[1] 1 

這顯然是假的,我不知道如何設置一切等於0

+0

你有*沒有*提供了一個可重複的例子。什麼是'數據'?你的「數據集」沒有任何名爲「b16aa」的列或類似的東西。如果你使用'data.table','data'是'data.table',那麼你不應該像你一樣創建兄弟。你的方法會遺漏很多東西和可能存在的問題。 – mnel 2013-05-06 23:10:59

+0

請參閱http://stackoverflow.com/questions/16408642/dataset-manipulation-substitution/16408858#16408858 – 2013-05-06 23:42:28

回答

2

如果DF是那麼你的數據幀試試這個:

DF[] <- as.numeric(DF == 174 & !is.na(DF)) 

或可分配給這名非破壞性的版本,你希望:

replace(DF, TRUE, as.numeric(DF == 174 & !is.na(DF))) 
+0

我希望數據表中等於174的所有內容都爲1,其他內容即使是NA也是0。 – 2013-05-06 23:51:30

+0

現在已經爲「NA」值添加了條件。 – 2013-05-06 23:59:30