R- SQLDF - SELECT ...案例...结束

R- SQLDF - SELECT ... CASE... END

您好, 我正在尝试 运行 使用来自 R 的 CASE 语句的查询。我正在使用 SQLDF 包。相同的查询在 Mysql 中运行良好。查询根据以下情况给"express"取值0或1:

Select "express" =
案例
当 E_MAIL 喜欢 "%gmail%" 然后 1
当 E_MAIL 喜欢 "%yahoo%" 然后 1
当 E_MAIL 喜欢 "%hotmail%" 然后 1
否则 0
结尾 来自数据
;

这是我在 R 中尝试过的:
alpha<-sqldf( "Select "express"=
案例
当 E_MAIL 喜欢 "%gmail%" 然后 1
当 E_MAIL 喜欢 "%yahoo%" 然后 1
当 E_MAIL 喜欢 "%hotmail%" 然后 1
否则 0
结尾 来自数据");

任何帮助将不胜感激!
谢谢

问题是问题中的查询字符串在引号中有引号并且语法错误。使用默认的 SQLite 数据库(sqldf 也支持 MySQL)我们有:

library(sqldf)
data <- data.frame(E_MAIL = c("x@x.com", "x@yahoo.com"))

sqldf("select E_MAIL,
  case
    when E_MAIL like '%gmail%' then 1
    when E_MAIL like '%yahoo%' then 1
    when E_MAIL like '%hotmail%' then 1
    else 0
  end express
  from data")

给予:

       E_MAIL express
1     x@x.com       0
2 x@yahoo.com       1

或者,也许您打算执行更新。这给出了与显示的测试数据相同的输出:

data <- data.frame(E_MAIL = c("x@x.com", "x@yahoo.com"), express = 0)

sqldf(c("update data set express = 
  case
    when E_MAIL like '%gmail%' then 1
    when E_MAIL like '%yahoo%' then 1
    when E_MAIL like '%hotmail%' then 1
    else 0
  end", "select * from main.data"))

注意:下次请提供完整的可重现示例,包括输入。