R:从范围内的数据表中选择值

时间:2011-03-05 16:04:27

标签: r

我在R中有一个数据表:

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

我希望获得日期在一定范围内的所有行。在SQL中,我可能会说SELECT * FROM mytable WHERE date > 5 AND date < 15

R中的等价物是什么,根据特定列中的值范围选择行?

3 个答案:

答案 0 :(得分:47)

构建一些数据

  

df&lt; - data.frame(name = c(“John”,   “亚当”),日期= 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

答案 1 :(得分:14)

这里有很多选项,但最容易遵循的是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首先索引行,然后是列。所以这里我们说的是日期&gt;的行。 5&amp; &LT; 15然后是所有列:

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

我还建议您查看帮助页面,了解子集?subset和逻辑运算符?"&"

答案 2 :(得分:2)

还应该考虑使用来自filter()的{​​{1}}来实现此目的的另一种直观方法。以下是一些例子:

dplyr