我在R中有一个包含8个变量的数据框myframe
。然后使用sqldf
加载library(sqldf)
包。然后我运行命令:
proxyframe = sqldf("select a, b, c, d, e from myframe where c > 1000")
但是,当我使用proxyframe
查看view(proxyframe)
时,我发现c < 1000
中包含明确的行实例。我做了一些进一步的调查,发现由于某种原因声明如下:
"0" < 6 # returns true
"22" > 6 # returns false
我正在寻找可能导致我的select语句返回奇数数据帧的任何一般提示或想法,以及它是否与R的奇怪使用比较运算符有关。我担心的是,某个列c
是一个字符,并且没有应用正确的比较运算符 - 尽管我没有太多经验知道R如何在封面下工作或者这个包如何工作。
答案 0 :(得分:2)
将角色列投射到真实:
> DF <- data.frame(a = "22", stringsAsFactors = FALSE)
> sqldf("select * from DF where cast(a as real) > 6")
a
1 22