你好,我正在尝试运行一个使用 R 中的 CASE 语句的查询。我正在使用 SQLDF 包。同样的查询在Mysql中工作正常。查询根据以下情况将值 0 或 1 "表示"给出:
选择"快递" =
箱
当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
或者,也许你打算执行一个 udpate。 这给出了与所示测试数据相同的输出:
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"))
注意:下次请提供一个完整的可重现示例,包括输入。