我有一个数据框df,
df = data.frame(name=c("jean", "lucie", "marie", "alain", "dupont", "stephane"),
address=c("A3_Lyon" ,"paris_A1", "Paris_A2_Test", "Par1", "Paris_A2de2_Lyon", 'Lille_Aide_'))
我想选择包含 A2 的地址,我如何使用sqldf
执行此操作?这条指令给我错误的结果:
sqldf("select * from df where address like '%_A2_%'")
## name address
## 1 marie Paris_A2_Test
## 2 dupont Paris_A2de2_Lyon
对我来说,正确的答案是:
## name address
## 1 marie Paris_A2_Test
我该怎么做
答案 0 :(得分:3)
对于大多数SQL方言,_匹配LIKE语句中的任何给定单个字符。使用sqldf(SQLite)的默认SQL驱动程序,您可以将 sqldf("select * from df where address glob '*_A2_*'")
sqldf("select * from df where address like '%\\_A2\\_%' ESCAPE '\\'")
替换为使用*和?的类似语句。分别代替%和_或尝试指定转义:
{{1}}