的情況下,使用mutate_all
從dplyr
你想將它添加到您的dplyr
管道A液:
library(dplyr)
df %>%
mutate_all(funs(ifelse(is.na(.), 0, .)))
結果:
A B C
1 1 1 2
2 2 2 5
3 3 1 2
4 0 2 0
5 1 1 0
6 2 2 0
7 3 1 3
8 0 2 0
9 1 1 3
10 2 2 3
11 3 1 0
12 0 2 3
13 1 1 4
14 2 2 4
15 3 1 0
16 0 2 0
17 1 1 1
18 2 2 0
19 3 1 2
20 0 2 0
如果在任何情況下y OU只需要更換NA在數字列,我以爲這可能是在建模的情況下,你可以使用mutate_if
:
library(dplyr)
df %>%
mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .)))
或基礎R:
replace(is.na(df), 0)
結果:
A B C
1 1 0 2
2 2 NA 5
3 3 0 2
4 0 NA 0
5 1 0 0
6 2 NA 0
7 3 0 3
8 0 NA 0
9 1 0 3
10 2 NA 3
11 3 0 0
12 0 NA 3
13 1 0 4
14 2 NA 4
15 3 0 0
16 0 NA 0
17 1 0 1
18 2 NA 0
19 3 0 2
20 0 NA 0
數據:
set.seed(123)
df <- data.frame(A=rep(c(0:3, NA), 5), B=rep(c("0", "NA"), 10), C=c(sample(c(0:5, NA), 20, replace = TRUE)))
這與接受的答案相同。 – 2017-02-05 01:09:20
編輯到我的答案.... – Deepesh 2017-02-07 10:50:14