选择值我有一个数据表R:R:从数据表中范围
name date
---- ----
John 1156649280
Adam 1255701960
...etc...
我想所有具有范围内的日期行。在SQL中,我可能会说SELECT * FROM mytable WHERE date > 5 AND date < 15
在R中,根据特定列中值的范围来选择行,等效于什么?
选择值我有一个数据表R:R:从数据表中范围
name date
---- ----
John 1156649280
Adam 1255701960
...etc...
我想所有具有范围内的日期行。在SQL中,我可能会说SELECT * FROM mytable WHERE date > 5 AND date < 15
在R中,根据特定列中值的范围来选择行,等效于什么?
一些建设数据
DF < - data.frame(名称= C( “John” 的 “亚当”),日期= C(3,5))
提取准确匹配:
subset(df, date>4 & date<6)
name date
2 Adam 5
以下语法产生相同的结果:
df[df$date>4 & df$date<6, ]
name date
2 Adam 5
你们两个都有我正在寻找的东西。谢谢! – poundifdef 2011-03-05 16:30:21
很多选项在这里,但最容易遵循的之一是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
帮助页面和逻辑运算符?"&"
subset() - 正是我在找的东西。谢谢! – poundifdef 2011-03-05 16:29:45
注意,sqldf包,可以应用SQL
提取物的范围相匹配到R数据帧。例如'库(sqldf); sqldf(“select * from mytable where date> 5 and date <15”)''。请参阅主页http://sqldf.googlecode.com。 – 2011-03-05 16:23:00
@G。格洛腾迪克非常酷;我想*有人*写过这样的东西,谢谢你的链接 – poundifdef 2011-03-05 16:31:56
我认为应该指出的是,数据有一个R包** data.table **,它创建类data.table的数据对象。目前尚不清楚您是否非正式使用术语“数据表”,实际上是指数据框架**,还是实际询问** data.table **对象。 – Ista 2011-03-05 16:37:31