R: выбор значений из таблицы данных в диапазоне

У меня есть таблица данных в R:

name    date
----    ----
John    1156649280
Adam    1255701960
...etc...

Я хочу получить все строки, у которых есть дата в пределах диапазона. В SQL я могу сказать SELECT * FROM mytable WHERE date > 5 AND date < 15

Что эквивалентно в R, чтобы выбирать строки на основе диапазона значений в определенном столбце?

Ответ 1

Построить некоторые данные

df < - data.frame(name = c ( "John", "Adam" ), date = c (3, 5))

Извлечь точные соответствия:

subset(df, date==3)

  name date
1 John    3

Извлечь совпадения в диапазоне:

subset(df, date>4 & date<6)

  name date
2 Adam    5

Следующий синтаксис дает идентичные результаты:

df[df$date>4 & df$date<6, ]

  name date
2 Adam    5

Ответ 2

Здесь много вариантов, но одним из самых простых для этого является subset. Рассмотрим:

> set.seed(43)
> df <- data.frame(name = sample(letters, 100, TRUE), date = sample(1:500, 100, TRUE))
> 
> subset(df, date > 5 & date < 15)
   name date
11    k   10
67    y   12
86    e    8

Вы также можете вставить логику непосредственно в индекс для вашего файла data.frame. Запятая разделяет строки из столбцов. Мы просто должны помнить, что R сначала индексирует строки, а затем столбцы. Итак, здесь мы говорим строки с датой > 5 и < 15, а затем все столбцы:

df[df$date > 5 & df$date < 15 ,]

Я также рекомендовал бы проверить страницы справки для подмножества, ?subset и логических операторов ?"&"