选择sqldf值大于所有值的中位数

时间:2018-03-30 17:09:00

标签: sql r

我试图找到所有股票记录,其中收益率大于使用sqldf的所有股票的中位数,但我收到此消息。

我已经尝试使用实际数字2.39并且它可以工作,但我没有成功替换变量使其动态化。也许一个子选择会更好?

mYd <- median(df3$Yield, na.rm = TRUE)
df4 <- sqldf("SELECT a.* 
             FROM df3 a 
             WHERE (a.Yield > mYd)
             ;")
  

rsqlite_send_query中的错误(conn @ptr,statement):没有这样的列:mYd

1 个答案:

答案 0 :(得分:1)

错误源于SQLdf无法在df3中找到名为mYd的列。它需要在查询中引用的每个相应列的数据框中查找列。尝试将mYd变量添加到df3数据框中作为正确的列:

df3$mYd <- median(df3$Yield, na.rm=TRUE)
df4 <- sqldf("SELECT * FROM df3 WHERE Yield > mYd;")

请注意,您并不需要在此处使用别名df3,因为它是查询中唯一的表,并且您不会生成任何计算列。