按 sqldf 中的日期范围过滤

2024-01-03

我正在尝试使用 sqldf 根据日期范围过滤数据帧,如下面的示例代码。我有类似下面示例数据的数据。 sqldf 返回的 datedf 数据帧没有记录。 SHV 数据框中有该日期范围内的记录,任何人都可以看到我做错了什么,并让我知道如何按 sqldf 中的日期范围进行过滤。对我来说,R 中的日期总是很棘手。

Code:
datedf<-sqldf("select field1                            
            ,fieldDate
                            from SHV
                            where fieldDate between '2004-01-01' and '2005-01-01'
                            ")


Data:

dput(SHV[1:50,c("field1","fieldDate")])
structure(list(field1 = c(1378L, 1653L, 1882L, 2400L, 
2305L, 2051L, 2051L, 2051L, 1796L, 2054L, 2568L, 1290L, 1804L, 
1804L, 3855L, 1297L, 2321L, 2321L, 2321L, 2071L, 2071L, 2074L, 
2588L, 1567L, 1317L, 1317L, 808L, 808L, 1321L, 2350L, 1586L, 
2613L, 1590L, 2614L, 2107L, 1340L, 1085L, 1085L, 2365L, 1344L, 
1601L, 1858L, 1603L, 1603L, 1860L, 2376L, 1355L, 1867L, 2382L, 
1872L), fieldDate = structure(c(12551, NA, NA, 14057, 15337, 
12919, 13336, 10325, 14984, 15643, 12864, 11242, 10749, 11207, 
10602, NA, 12646, 15649, NA, NA, NA, NA, NA, 17015, 13938, NA, 
16693, NA, NA, 12634, 12614, 10689, 12755, 10844, 11375, 4899, 
17298, 10905, 11450, NA, 10330, 15429, 12634, 10504, 12625, 11081, 
10939, NA, 12934, 11176), class = "Date")), .Names = c("field1", 
"fieldDate"), row.names = c(NA, 50L), class = "data.frame")

Per the sqldf() 文档 https://github.com/ggrothendieck/sqldf#4-how-does-sqldf-work-with-date-class-variables,需要将日期格式化为数值,以便将它们作为日期处理。这可以通过以下方式完成sprintf()生成 SQL 查询时。

SHV <- structure(list(field1 = c(1378L, 1653L, 1882L, 2400L, 
                          2305L, 2051L, 2051L, 2051L, 1796L, 2054L, 2568L, 1290L, 1804L, 
                          1804L, 3855L, 1297L, 2321L, 2321L, 2321L, 2071L, 2071L, 2074L, 
                          2588L, 1567L, 1317L, 1317L, 808L, 808L, 1321L, 2350L, 1586L, 
                          2613L, 1590L, 2614L, 2107L, 1340L, 1085L, 1085L, 2365L, 1344L, 
                          1601L, 1858L, 1603L, 1603L, 1860L, 2376L, 1355L, 1867L, 2382L, 
                          1872L), fieldDate = structure(c(12551, NA, NA, 14057, 15337, 
                                                              12919, 13336, 10325, 14984, 15643, 12864, 11242, 10749, 11207, 
                                                              10602, NA, 12646, 15649, NA, NA, NA, NA, NA, 17015, 13938, NA, 
                                                          16693, NA, NA, 12634, 12614, 10689, 12755, 10844, 11375, 4899, 
                                                          17298, 10905, 11450, NA, 10330, 15429, 12634, 10504, 12625, 11081, 
                                                          10939, NA, 12934, 11176), class = "Date")), .Names = c("field1", 
                                                                                                                 "fieldDate"), row.names = c(NA, 50L), class = "data.frame")

library(sqldf)
sqlStmt <- paste("select field1, fieldDate from SHV",
                 "where fieldDate between ",
                 sprintf("%d and %d",as.Date('2004-01-01','%Y-%m-%d'),
                     as.Date('2005-01-01','%Y-%m-%d')))
datedf<-sqldf(sqlStmt)
datedf

> datedf
  field1  fieldDate
1   1378 2004-05-13
2   2321 2004-08-16
3   2350 2004-08-04
4   1586 2004-07-15
5   1590 2004-12-03
6   1603 2004-08-04
7   1860 2004-07-26
> 

The sprintf()语句将日期转换为数值,这确保了betweenSQL 中的运算符工作正常。

> sqlStmt
[1] "select field1, fieldDate from SHV where fieldDate between  12418 and 12784"
>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按 sqldf 中的日期范围过滤 的相关文章

随机推荐

  • Node.js - 为什么每个请求我的回调都会被调用 3 次?

    这是我的第一个节点应用程序 我实际上刚刚开始研究 API 来了解它的全部内容 我立即对以下服务器代码和控制台输出感到困惑 有人可以解释为什么我的 console log 在浏览器刷新时出现 3 次吗 var http require htt
  • SqlAlchemy 相当于使用 FreeTDS 的 pyodbc 连接字符串

    以下作品 import pyodbc pyodbc connect DRIVER FreeTDS Server my db server Database mydb UID myuser PWD mypwd TDS Version 8 0
  • 在 C# 中向 DateTime 添加天数

    C 可以添加日期吗 DateTime Today ToLongDateString 10 我尝试过这个 但它不起作用 您想添加天数吗 DateTime newDate DateTime Today AddDays 10 请注意 您会得到一个
  • Android 上的 wifi-direct 终端连接到对等点?

    有没有办法通过 Wifi Direct 终止与对等方的连接 我尝试了cancelConnect和removeGroup 两人都回来了 忙吗 谢谢 这是我用来断开与同伴的连接的方法 我从日志中注意到 Android 内置应用程序也使用相同的方
  • 抽屉式导航 - 禁止点击抽屉后面的项目

    有什么方法可以确保导航抽屉位于片段中内容的顶部 我使用虚拟数据创建了一个小型测试应用程序 10 个片段 带有相应的编号按钮和文本视图 问题在于片段元素似乎比导航抽屉具有更高的优先级 如屏幕截图所示 一旦我尝试打开 0 片段 它就会选择注册导
  • Bower 自动更新 Bower.json

    我使用 Bower 1 0 0 运行以下命令 mkdir testdir cd testdir bower init accept defaults bower install jquery s the s is supposed to c
  • 使用 jQuery AJAX 捕获 404 状态

    我有这个代码 ajax cache false url Admin Contents GetData data accountID AccountID success function data CityID html data error
  • Zend框架中的重定向和转发有什么区别

    Zend 框架中的重定向和转发有什么区别 什么时候应该使用重定向 什么时候应该使用转发 想象一下您在办公室接到一个电话 有人想与销售人员交谈 如果你说 请拨打123456 然后挂断 这是redirect 如果您说 稍等 并将电话转接给他们
  • C# 中的字符串基准 - 重构速度/可维护性

    我一直在用自己的时间摆弄小函数 试图找到重构它们的方法 我最近读了 Martin Fowler 的书重构 改进现有代码的设计 https rads stackoverflow com amzn click com 0201485672 我发
  • ologit 的 vglm()、orm()、polr() 和 clm() 中的系数

    我正在使用不同的软件包进行 ologit 它们是VGAM rms MASS and ordinal 使用数据集wine从包装中ordinal 首先是vglm library VGAM vglmfit lt vglm rating temp
  • 使用 jQuery 获取 XML 中的节点值

    我正在尝试解析以下 XML
  • ibpy:如何捕获从reqAccountSummary返回的数据

    我正在使用交互式代理的 ibapi 并且一般情况下我陷入了如何捕获返回数据的困境 例如 根据api docs https interactivebrokers github io tws api account summary html a
  • R - 条件增量

    这对代码来说应该是微不足道的 但无法在 R 中想到优雅的单行代码 我有一个数据框 如下所示 data lt data frame index seq 1 20 event rep 0 20 data event 10 lt 1 data e
  • 使用 leaflet 包在 R 中绘制等值线图

    我正在尝试使用 leaflet 包在 R 中创建交互式 Choropleth 地图 我的最终输出应该是这样的 当用户单击美国的任何一个州时 应该显示一个弹出窗口 其中包含州名称和相应州的震级值 下面是我正在使用的代码 我面临的问题是 每当我
  • PrimaryContext LDAPS 自签名证书

    我们有一个应用程序 使用 LDAP 通过 IP 地址 通过 VPN 隧道对远程 AD 进行身份验证 使用以下代码 using PrincipalContext pc new PrincipalContext ContextType Doma
  • 如何强制 make 在 Windows/MSYS2 上使用 bash 作为 shell

    我正在尝试重新编译一个已经有 Windows 端口的应用程序 所以它应该可以工作 当然 你还需要运行 configure所以你需要 MSYS 或 MSYS2 配置部分运行良好 现在当我跑步时make n 所以它显示执行了哪些规则 我得到 m
  • 多对多关系。 ORM Django

    class Toy models Model name models CharField max length 20 desc models TextField class Box models Model name models Char
  • 从模型生成视图模型?

    我目前正在为我的 WPF C 应用程序编写视图模型 但我必须做很多复制和粘贴 有没有办法像从数据库生成模型一样从模型生成视图模型 我在网上没有找到任何关于它的信息 也许看看自动映射器 http www codeplex com AutoMa
  • 尝试反序列化继承自 Exception 的类时,Json.net 失败

    我有课SearchError继承自Exception 当我尝试从有效的 json 反序列化它时 我会得到以下异常 ISerialized 类型 SearchError 没有有效的构造函数 要正确实现 ISerialized 应存在采用 Se
  • 按 sqldf 中的日期范围过滤

    我正在尝试使用 sqldf 根据日期范围过滤数据帧 如下面的示例代码 我有类似下面示例数据的数据 sqldf 返回的 datedf 数据帧没有记录 SHV 数据框中有该日期范围内的记录 任何人都可以看到我做错了什么 并让我知道如何按 sql