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

Gab*_*yLP 4 r sqldf

我需要使用Date字段连接2个表

> class(pagos$pseudo_1mes)
[1] "Date"
>  class(pseudo_meses$pseudo_1mes)
[1] "Date"
Run Code Online (Sandbox Code Playgroud)

我的代码是:

library(sqldf)

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

我得到以下错误,没有结果:

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

我该如何解决?谢谢

小智 8

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

  • 我还在受影响的数据集上使用了`difftime`,必须有一些东西 (2认同)
  • 对我来说同样的问题.我的数据框中有一个difftime列.在将其强制转换为数字后,错误消失了. (2认同)

You*_*ung 5

我遇到了同样的问题。我的解决办法是在命令末尾添加(method = "name__class"),如:

sqldf("select * from pagos", method = "name__class")
Run Code Online (Sandbox Code Playgroud)

然而,日期变量的格式似乎会改变,尽管日期变量可以稍后更新。我认为这仍然是一个有用的解决方案,因为我的目的是让 sqldf 工作来解决复杂的任务,同时更新列相对容易得多。


小智 2

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

使用:

sqldf("select x, y, z from pagos")
Run Code Online (Sandbox Code Playgroud)

不要使用:

sqldf("select * from pagos")
Run Code Online (Sandbox Code Playgroud)