R-sqldf -need显式单位用于数字转换

时间:2014-09-24 20:25:22

标签: r sqldf

我需要使用日期字段

连接2个表
> class(pagos$pseudo_1mes)
[1] "Date"
>  class(pseudo_meses$pseudo_1mes)
[1] "Date"

我的代码是:

library(sqldf)

pagos<-sqldf("select a.*, b.mes_atras from pagos a 
        left join pseudo_meses b
      on a.pseudo_1mes=b.pseudo_1mes")

我收到以下错误但没有结果:

  

asfn(rs [[i]])出错:需要显式单位进行数值转换

我该如何解决?感谢

4 个答案:

答案 0 :(得分:7)

我的一个变量有class ='difftime'而不是常规数字,因为我减去了日期。 SQLDF不适用于difftime类。对我来说发生的事情是我有一个data.table,减去一些日期,最后得到一个difftime变量类型。我将它转换为data.frame,当我再次进行减法时,它是数字。

答案 1 :(得分:3)

我遇到了同样的问题。我的解决方案是在命令的末尾添加(method =&#34; name__class&#34;),例如:

sqldf("select * from pagos", method = "name__class")

但是,似乎日期变量的格式将被更改,尽管日期变量可以在以后更新。我认为这仍然是一个有用的解决方案,因为我的目的是让sqldf解决复杂的任务,同时更新列更容易。

答案 2 :(得分:1)

我收到了同样的错误消息。我不知道消息的原因,但在sql查询中给出显式单位解决了我的问题。

使用:

sqldf("select x, y, z from pagos")

不要使用:

sqldf("select * from pagos")

答案 3 :(得分:1)

我得到了同样的错误,然后我发现我的数据集中的变量不是数字。所以我将该变量转换为数字(as.numeric())。然后它奏效了。