你好,
我正在尝试使用R中的CASE语句运行查询。我正在使用SQLDF包。相同的查询在Mysql中工作正常。查询根据以下情况给出0或1的值以“表达”:
选择“表达” =
案件
当E_MAIL像“%gmail%”时,则为1
当E_MAIL像“%yahoo%”时,则为1
当E_MAIL像“%hotmail%”时,则为1
否则0
结束
从数据
;
这是我在R中尝试过的:
alpha 案件
当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"))
注意:下次,请提供完整的可复制示例,包括输入内容。
关于mysql - R- SQLDF-选择…案例…结束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29020920/