gpt4 book ai didi

sql - 使用 sqldf 保存时间类

转载 作者:行者123 更新时间:2023-12-03 17:41:51 27 4
gpt4 key购买 nike

我正在使用 sqldf加入多个表,但我无法保存 times使用 chron 设置的类包上一列。我用了method="name__class" sqldf 的参数函数并用类适本地命名我的列,但我的 times使用 sqldf 选择后不保留变量.

是否可以选择 times类列并保留类,或者我必须在选择 SQL 之后重置类(这并不理想)。我已经包含了一个玩具示例,它显示了 sqldf保留 Date 类,但不保留 times类(class):

 library(chron)
mytime = data.frame(x=times(c("11:45:00", "12:15:00")))
mytime$y = as.Date(c("2019-09-01", "2019-09-11"))
mytime

x y
1 11:45:00 2019-09-01
2 12:15:00 2019-09-11
class(mytime$x)
[1] "times"
class(mytime$y)
[1] "Date"


sqldf('select x as x__times, y as y__Date from mytime', method = "name__class")

x__times y
1 0.4895833 2019-09-01
2 0.5104167 2019-09-11

在此先感谢您的帮助。

最佳答案

sqldf寻找 as.X转换为类 X但是没有as.times所以它假设 times不是一个类和x__times是您要使用的实际名称。

要解决此问题,请定义 as.times :

as.times <- times

方法="自动"

此外,如果您添加 as.times然后定义为@A。 Suliman 在评论中指出,您实际上不需要使用 name__class在这种情况下作为默认值 method="auto"已经自动将任何与输入列同名的输出列转换为该输入列的类。

RH2

与 SQLite 不同,H2 数据库支持日期和时间类,因此如果您使用 H2 数据库后端 RH2,则无需定义 as.times .
library(RH2)
library(sqldf)
sqldf("select x, y from mytime")

如果您想返回 SQLite,请确保首先分离 RH2,因为如果加载它,它将假定您需要它,除非您根据 ?sqldf 明确指定 SQLite。 .

新问题

这已作为新问题添加 https://github.com/ggrothendieck/sqldf/issues/36

关于sql - 使用 sqldf 保存时间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57446335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com