2017-04-05 129 views
1

改變我的參數下的所有值我有朦朧113x159一個大的數據幀,這樣的:與NA r中

i1 i2 i3 i4 
1 49 76 3 65 
2 35 14 37 98 
3 90 17 71 27 
4 27 65 54 88 

我需要改變所有值,像這樣:

i1 i2 i3 i4 
1 49 76 NA 65 
2 35 NA 37 98 
3 90 NA 71 27 
4 27 65 54 88 

有什麼想法?

+4

你可以使用這個'是。 na(df)< - df <20'。 – lmo

+1

或者'df [df <20] < - NA' – yeedle

+0

我已經做到了,它說:警告消息: 在Ops.factor(左,右):'<'對於因素沒有意義。這可能是由於列/行名稱?謝謝! – mppd

回答

1

這將適用於您的示例,它由所有數字列組成。

is.na(df) <- df < 20 

df 
    i1 i2 i3 i4 
1 49 76 NA 65 
2 35 NA 37 98 
3 90 NA 71 27 
4 27 65 54 88 

對於真實數據集的情況,看起來您有因子列。在這種情況下,您應該使用sapply來檢查每列的類型,並僅對數字列執行替換。這將工作

is.na(df[sapply(df, is.numeric)]) <- df[sapply(df, is.numeric)] < 20 

也適用於你的例子。

警告: 比運營商,<越少,工作比較字符,但他們返回FALSE爲<

"t" < 20 
[1] FALSE 
"t" < 2000000000000 
[1] FALSE 

和TRUE爲>

"t" > 2000000000000 
[1] TRUE 
+1

真的很好,它的工作原理。謝謝! – mppd