问题描述
我正在处理如下简单数据:
teacher student
12 409
43 403
12 415
12 409
67 311
19 201
我正在尝试检索 teacher = 12 和 student = 409 的条目。我正在使用以下命令:
library(sqldf)
sqldf('SELECT *
FROM df
WHERE teacher == 12 and student == 409')
我知道这是一个基本命令,但是当我运行它时,我收到以下错误消息:
Error in asfn(rs[[i]]) : need explicit units for numeric conversion
我得到同样的错误,即使我运行:
# Without the and condition
sqldf('SELECT *
FROM df
WHERE teacher == 12')
或者当我运行这个
# Single equal sign
sqldf('SELECT *
FROM df
WHERE teacher = 12')
请注意,在我当前的数据集中,df$teacher
和 df$student
都是整数。我想了解为什么我会收到此错误。任何建议将不胜感激。
我想要的输出是:
teacher student
12 409
12 409
谢谢!
解决方法
我们只需要一个=
library(sqldf)
sqldf('SELECT *
FROM df
WHERE teacher = 12 and student = 409')
-输出
teacher student
1 12 409
2 12 409
使用 OP 的原始数据,没有修复,因此,我们可以使用 method
参数`
sqldf('SELECT *
FROM df
WHERE teacher = 12 and student = 409',method = 'name__class')
根据?sqldf
,"name__class"
以Date
类为例。由于 OP 的原始数据未共享,因此仍然不确定它为什么起作用
method = "name__class" 这意味着以 __class 结尾的列名称带有两个下划线,其中 class 是 R 类(例如 Date)被转换为该类,并且 __class 部分从列名中删除。`>
数据
df <- structure(list(teacher = c(12L,43L,12L,67L,19L),student = c(409L,403L,415L,409L,311L,201L)),class = "data.frame",row.names = c(NA,-6L))