Select 不包含任何负值或缺失值的行

Select Rows That Does Not Contain any Negative Or Missing Value

假设数据库 table 有几百列。在 SQL 语句中,您如何 select rows/records 不包含任何负值或缺失值?您可以使用 R 用户的 sqldf 包来实现吗?

这是一个 6 行 2 列的数据框示例:

D = data.frame(X = c(23, -24, 35, 12, 34, 41), 
               Y = c(100, 98, 89, NA, 56, 90))

SQL 语句应仅 return 包含第 1、3、5 和 6 行的 table。

text = "X Y
23  100
-24 98
35  89
12  NA
34  56
41  90"
df = read.table(text=text, header = T)
# install.packages("sqldf")
library(sqldf)

conditions = c(">=0","NOT NULL")

columns = colnames(df)

applyConditions <- function(columns,conditions){
  grid = expand.grid(columns,conditions)
  apply(grid, 1, 
   function(x) paste(x, collapse = " ")
  )
  
}
select <- "SELECT * FROM df where "
where <- paste(applyConditions(columns,conditions),collapse = " AND ")

sqldf(paste(select,where))