Выделить строки во фрейме данных с частичным совпадением значений столбца - PullRequest
1 голос
/ 11 марта 2020

Предположим, у меня есть следующий набор данных

d <- data.frame(1:31, 31:1)
names(d) <- c("1st", "2nd")

И я хочу выбрать столбцы, где "3" встречается в столбце с именем "1-й" (то есть столбцы 3, 13 и 31 должны быть выбраны, но не столбец 1, 9 и 29).

sqldf("select * from d where 1st LIKE '%3%'")

выдает ошибку:

Ошибка: нераспознанный токен: "1-й"

Как я могу выборочно подразделить часть фрейма данных на основе частичного совпадения?

Желаемый результат:

1st    2nd
3       29
13      19
31      1

Любая помощь очень ценится

1 Ответ

3 голосов
/ 11 марта 2020

У нас есть недопустимые имена столбцов, заключите их в квадратные скобки:

sqldf("select * from d where [1st] LIKE '%3%'")
#   1st 2nd
# 1   3  29
# 2  13  19
# 3  23   9
# 4  30   2
# 5  31   1

Относительно недопустимых :

Я не нашел ссылки на него, но имена таблиц, которые действительны без использования квадратных скобок, должны быть любыми alphanumeri c комбинация, которая не начинается с ди git

...