如何在R中将所有NA转换为0?

时间:2017-10-06 04:02:01

标签: r dataframe

我尝试使用 sqldf

sqldf("update brave set myColumn = 0 where myColumn is null")

2 个答案:

答案 0 :(得分:1)

我的方法:

df <- data.frame(values = c(4, 2, 4, NA, 61, 2, 5, 634, NA, 431, NA, 54352, 323, 45, NA))

df[is.na(df)] <- 0

更改df
   values
1       4
2       2
3       4
4      NA
5      61
6       2
7       5
8     634
9      NA
10    431
11     NA
12  54352
13    323
14     45
15     NA

   values
1       4
2       2
3       4
4       0
5      61
6       2
7       5
8     634
9       0
10    431
11      0
12  54352
13    323
14     45
15      0

答案 1 :(得分:1)

这是常见问题解答。请参阅https://github.com/ggrothendieck/sqldf上的常见问题解答#8。如上所述,更新不会返回值。您需要使用select:

显式返回一个
library(sqldf)

# test input.  BOD is builtin data frame that comes with R.
BOD$Time[3] <- NA

sqldf(c("update BOD set Time = 0 where Time is null",
        "select * from main.BOD"))

  Time demand
1    1    8.3
2    2   10.3
3    0   19.0
4    4   16.0
5    5   15.6
6    7   19.8

我们看到NA填充了零。

当sqldf与最新版本的RSQLite - 版本2.0一起使用时,使用更新会导致警告;但是,它仍然可以正常工作,所以在RSQLite解决此问题之前要么忽略警告,要么使用早期版本的RSQLite。