R data.frames中的SQL属性FROM和WHERE

时间:2013-06-03 01:34:11

标签: r dataframe

请如何使用R data.frames中的SQL功能选择数据?

假设我有以下data.frame:

Names Numbers
A       1
B       2 
C       3

如何使用字符串“B”和“Numbers”而不是数据[2,2]来选择数字2?我想使用像数据[“B”,“数字”]这样的东西,但它不起作用,请帮忙!!!

1 个答案:

答案 0 :(得分:2)

使用[时,您可以使用subsetdata.frames。请注意,[有一个drop = TRUE参数,如果返回单个值/列,它将强制转换为原子向量。

DF <- data.frame(Names = LETTERS[1:3], Numbers = 1:3)

subset(DF, Names == 'B', select = Numbers)
##   Numbers
## 2       2
DF[DF$Names == 'B', 'Numbers']
## [1] 2
DF[DF$Names == 'B', 'Numbers', drop = FALSE]
##   Numbers
## 2       2

我喜欢data.tables. FAQ 2.16描述了SQL和data.table语法

之间的相似之处
library(data.table)
DT <- data.table(DF)

DT[Names == 'B', Numbers]
## [1] 2
# using keys
setkey(DT,Names)
DT['B'][,list(Numbers)]
##     Numbers
## 1:        2

sqldf允许您在data.frames中使用SQL

library(sqldf)
sqldf('select Numbers from DF where Names == "B"')
##   Numbers
## 1       2