選擇值我有一個數據表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