-2

请问如何在 R data.frames 中使用类似 SQL 的特性来选择数据?

假设我有以下 data.frame :

Names Numbers
A       1
B       2 
C       3

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

4

1 回答 1

2

可以使用[,或者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
于 2013-06-03T01:47:50.633 回答