请问如何在 R data.frames 中使用类似 SQL 的特性来选择数据?
假设我有以下 data.frame :
Names Numbers
A 1
B 2
C 3
如何使用字符串“B”和“Numbers”而不是 data[2,2] 选择数字 2?我想使用类似 data["B", "Numbers"] 的东西,但它不起作用,请帮忙!!!
可以使用[
,或者subset
当使用data.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.16data.table
描述了 SQL 和语法的相似之处
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
它可以让你SQL
在 data.frames 中使用
library(sqldf)
sqldf('select Numbers from DF where Names == "B"')
## Numbers
## 1 2