2015-10-08 1 views
0

Я использую sqldf-пакет и sql анализирую одну таблицу, сгенерированную классификационной моделью.Что касается функции sqldf package/regexp

Но когда я использую код:

table<-sqldf(" 
SELECT a, 
b, 
c, 
d, 
e, 
f, 
CASE WHEN (REGEXP_LIKE(t, '\b(2nd time|3rd time|4th time)\b')) = TRUE 
THEN 1 ELSE 0 END AS UPSET_NOT_LIKE, 
regexp_extract(t, '\b(2nd time|3rd time|4th time)\b')) as Word 
FROM cls     
") 

Похоже, что пакет sqldf не REGEXP_LIKE и regexp_extract функцию.

Есть ли какие-либо SQL-пакеты, которые я могу использовать для выполнения запроса?

+0

Доступные функции SQL зависят от используемого вами бэкэнда. По умолчанию это SQLite, но если у вас есть любимая марка SQL, тогда установите драйверы и прикрепите. –

+0

Привет @BondedDust, как я могу установить драйверы и подключиться? вы имеете в виду, что мне нужно подключить R к серверу sql для выполнения регулярного выражения? В настоящее время я получаю данные из базы данных netezza, должен ли я подключать и загружать данные в базу данных, чтобы сделать это? –

+0

Возможно, это поможет: http://stackoverflow.com/questions/22302411/connect-r-and-netezza-using-rjdbc –

ответ

3

sqldf работает с базами данных SQLite, h2, mysql и postgresql.

По умолчанию SQLite и не поддерживает эти функции. SQLite поддерживает ключевое слово regexp, если SQLite был скомпилирован с поддержкой, но я не думаю, что драйвер в пакете RSQLite сделал это.

Если вы используете сервер базы данных PostgreSQL для sqldf то оператор ~ доступен, чтобы сделать согласование регулярных выражений и regexp_matches доступен для извлечения совпадений.

См. Часто задаваемые вопросы № 12 на sqldf home page для получения информации об использовании бэкэнда postgreSQL с sqldf.

См. here для получения информации о регулярном выражении в postgreSQL.

В будущем, пожалуйста, предоставьте в своих вопросах полные минимальные самодостаточные воспроизводимые примеры, которые в этом случае означают также выборку строк из cls, например. dput(head(cls)).