R library(sqldf) 无法更改具有 na(null) 的列的包含
R library(sqldf) cannot change the contain of a column with na( null)
我有一个列,当我使用
时,我想用一个值替换空值(该列仅包含 na)
library(sqldf)
options(sqldf.driver = "SQLite")
var1<-sqldf("select col1, case when col2 is \"NA\" then 'sth' else 'sth' end as col2 from table1")
改不了,我也试过了
var1<-sqldf("select col1, case when col2 is null then 'sth' else 'sth' end as col2 from table1")
并尝试全部替换(整列为空):
var1<-sqldf("select col1, 'sth'as col2 from table1")
不是这些工作,为了让它工作,我必须创建一个新列,如
var1<-sqldf("select col1, 'sth'as col2_sth from table1")
但我需要保留具有新值的列,在这种情况下我该怎么办?它是 sqldf 中的错误吗?
如果您的所有列都是 NA,您的问题可能是该列是数字,您不能在不更改 class 的情况下输入字符,请参见示例:
library(sqldf)
options(sqldf.driver = "SQLite")
table1 <- data.frame(col1 = 1:6, col2 = rep(NA, 6))
sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
col1 col2
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 NA
6 6 NA
Warning message:
In asfn(rs[[i]]) : NAs introduced by coercion
更改 col2 的 class 这没有问题。
table1$col2 <- as.character(table1$col2)
sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
col1 col2
1 1 sth
2 2 sth
3 3 sth
4 4 sth
5 5 sth
6 6 sth
我有一个列,当我使用
时,我想用一个值替换空值(该列仅包含 na)library(sqldf)
options(sqldf.driver = "SQLite")
var1<-sqldf("select col1, case when col2 is \"NA\" then 'sth' else 'sth' end as col2 from table1")
改不了,我也试过了
var1<-sqldf("select col1, case when col2 is null then 'sth' else 'sth' end as col2 from table1")
并尝试全部替换(整列为空):
var1<-sqldf("select col1, 'sth'as col2 from table1")
不是这些工作,为了让它工作,我必须创建一个新列,如
var1<-sqldf("select col1, 'sth'as col2_sth from table1")
但我需要保留具有新值的列,在这种情况下我该怎么办?它是 sqldf 中的错误吗?
如果您的所有列都是 NA,您的问题可能是该列是数字,您不能在不更改 class 的情况下输入字符,请参见示例:
library(sqldf)
options(sqldf.driver = "SQLite")
table1 <- data.frame(col1 = 1:6, col2 = rep(NA, 6))
sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
col1 col2
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 NA
6 6 NA
Warning message:
In asfn(rs[[i]]) : NAs introduced by coercion
更改 col2 的 class 这没有问题。
table1$col2 <- as.character(table1$col2)
sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
col1 col2
1 1 sth
2 2 sth
3 3 sth
4 4 sth
5 5 sth
6 6 sth