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
и логических операторов ?"&"