我尝试使用 sqldf
sqldf("update brave set myColumn = 0 where myColumn is null")
答案 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。