Относительно функции sqldf package/regexp

Я использую пакет sqldf, и sql анализирует одну таблицу, созданную моделью классификации.

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

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-advanced, которые я могу использовать для выполнения запроса?


person WayToNinja    schedule 08.10.2015    source источник
comment
Доступные функции SQL зависят от подключенного бэкэнда. По умолчанию это SQLite, но если у вас есть любимая марка SQL, то установите драйвера и прикрепите.   -  person IRTFM    schedule 09.10.2015
comment
Привет @BondedDust, как я могу установить драйверы и подключить? Вы имеете в виду, что мне нужно подключить R к серверу sql, чтобы выполнить регулярное выражение? В настоящее время я получаю данные из базы данных netezza. Должен ли я для этого подключаться и загружать данные в базу данных?   -  person WayToNinja    schedule 09.10.2015
comment
Возможно, это поможет: stackoverflow.com/questions /22302411/   -  person IRTFM    schedule 09.10.2015


Ответы (1)


sqldf работает с бэкендами SQLite, h2, mysql и postgresql.

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

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

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

См. здесь информацию о сопоставлении регулярных выражений в postgreSQL.

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

person G. Grothendieck    schedule 09.10.2015