序数日期的格式(带有后缀 -st、-nd、-rd、-th 的月份中的某天)

2024-01-29

我错过了什么吗?我不知道如何将以下内容转换为Dates,其中该月的某天 (%d) 具有序数后缀-st, -nd, -rd, -th:

ord_dates <- c("September 1st, 2016", "September 2nd, 2016",
               "September 3rd, 2016", "September 4th, 2016")

?strptime似乎没有列出序数后缀的简写,并且它不会自动处理:

as.Date(ord_dates, format = c("%B %d, %Y"))
#[1] NA NA NA NA

是否有用于处理忽略字符的标记format争论?我丢失了一个令牌?

我能想到的最好的办法是(可能有更短的正则表达式,但想法相同):

as.Date(gsub("([0-9]+)(st|nd|rd|th)", "\\1", ord_dates), format = "%B %d, %Y")
# [1] "2016-09-01" "2016-09-02" "2016-09-03" "2016-09-04"

看来这类数据应该是比较常见的;我错过了什么吗?


享受的力量lubridate:

library(lubridate)    
mdy(ord_dates)

[1] "2016-09-01" "2016-09-02" "2016-09-03" "2016-09-04"

在内部,lubridate没有任何特殊的转换规范可以实现这一点。相当,lubridate首先使用(通过聪明的猜测)格式"%B %dst, %Y"。这得到了第一个元素ord_dates.

然后它检查NAs 并重复对剩余元素的智能猜测,确定"%B %dnd, %Y"得到第二个元素。以此类推,直到没有NAs left(在这种情况下发生在 4 次迭代之后),或者直到它的智能猜测无法找到可能的格式候选。

你可以想象这使得lubridate速度较慢,而且确实如此——大约是使用上面 @alistaire 建议的智能正则表达式速度的一半:

set.seed(109123)
ord_dates <- sample(
  c("September 1st, 2016", "September 2nd, 2016",
    "September 3rd, 2016", "September 4th, 2016"),
  1e6, TRUE
  )

library(microbenchmark)

microbenchmark(times = 10L,
               lubridate = mdy(ord_dates),
               base = as.Date(sub("\\D+,", "", ord_dates),
                              format = "%B %e %Y"))
# Unit: seconds
#       expr      min       lq     mean   median       uq      max neval cld
#  lubridate 2.167957 2.219463 2.290950 2.252565 2.301725 2.587724    10   b
#       base 1.183970 1.224824 1.218642 1.227034 1.228324 1.229095    10  a 

明显的优势在于lubridate其优点在于其简洁性和灵活性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

序数日期的格式(带有后缀 -st、-nd、-rd、-th 的月份中的某天) 的相关文章

随机推荐

  • auth !== null 有多安全?火力基地

    我已经使用 Firebase 有一段时间了 但我现在才决定真正研究一下安全规则 我的问题是 auth null 有多安全 是的 我意识到这意味着只有经过身份验证的用户才能访问数据 但是经过身份验证有多容易 有人可以注册该应用程序 然后使用这
  • 使用 Python 绘制 2D 直方图

    我正在尝试使用这些代码在 Python 中绘制 2D 直方图 from math import import pylab as p import matplotlib pyplot as plt import numpy as np x p
  • 连接两个大的 numpy 2D 数组

    我有两个大的 numpy 二维数组 一种形状是 X1 1877055 1299 另一种形状是 X2 1877055 1445 然后我用 X np hstack X1 X2 将两个数组连接成一个更大的数组 但是 程序不运行并退出 代码为 9
  • C# 使用反射获取参数值

    如何获取 parms 的值 在使用反射的循环中 在上一个问题中 有人向我展示了如何使用反射循环参数 static void Main string args ManyParms a b c 10 20 true end Console Re
  • matplotlib 中的第三个堆叠条形图

    考虑来自 matplotlib 网站的示例代码 a stacked bar plot with errorbars import numpy as np import matplotlib pyplot as plt N 5 menMean
  • 没有互联网时 WWW 冻结

    我正在 Unity 中编写一个简单的代码 以检查我是否能够通过我的应用程序访问网站 这是我写的代码 IEnumerator CheckInternetPing WWW wwwInternet new WWW http google com
  • ASP.Net MVC - 从 HttpPostedFileBase 读取文件而不保存

    我正在使用文件上传选项上传文件 我直接用 POST 方法将此文件从视图发送到控制器 例如 HttpPost public ActionResult Page2 FormCollection objCollection HttpPostedF
  • 将 Android 应用程序连接到 Google Cloud Endpoints 时出错:找不到类

    我已经使用 Google Cloud Endpoints 构建了一个 API 并且正在尝试编写一个 Android 应用程序来连接它 我按照以下教程进行操作 https developers google com appengine doc
  • 如何正确检查SQL Server 2005中是否存在临时表?

    我有一个查询 我从表中插入一些值 SELECT ID NAME INTO tmpTable1 FROM TableOriginal 第一次执行没问题 如果我在SSMS Microsoft Sql Server Management Stud
  • 部署后 swagger-ui 返回 500

    开箱即用的配置在我的机器上完美运行 没有任何问题 但是当我部署到我们的测试环境时 我收到以下消息 500 消息 发生错误 api swagger docs v1 The deployment is to default web site a
  • 将 zend 过滤器和验证链附加到模型/理论实体

    本集来自大象之声 http voicesoftheelephpant com s Matthew Weier podPressPlayerSpace 1 开始谈论Zend Form如何Zend Form将于 22 00 左右出现在 Zend
  • Android 关于焦点变化

    当用户将焦点从编辑文本更改为另一个项目时 我想更新 EditText 我想检查编辑文本的内容 例如数字是否大于 10 如果将其更改为 10 我该怎么做呢 set setOnFocusChangeListener到您的编辑文本 editTex
  • 在ajax请求回调中显示PHP错误

    在一个页面中 test php 我只需激活错误报告 停用日志记录 然后调用一个函数test 它不存在 正如预期的那样 如果我运行代码 我会收到错误消息 Fatal error Uncaught Error Call to undefined
  • 是否有 android shell 或 adb 命令可以用来获取设备的 IMEI/MEID?

    我可以运行一些 adb 或 android shell 命令来返回设备的 IMEI 或 MEID 号码吗 最好这就是返回的全部内容 我想出了如何做到这一点 你需要跑adb shell dumpsys iphonesubinfo在一个壳里 它
  • 条形图:如果值是正值还是负值,如何选择颜色

    我有一个带有正值和负值的 pandas 数据框 想将其绘制为条形图 我想绘制正值 绿色 和负值 红色 非常原始 哈哈 我不知道如何传递 if gt 0 green else data pd DataFrame 15 10 8 4 5 ind
  • 节点和顶点有什么区别?

    节点和顶点之间有什么区别 如果有 查了无数网站都找不到答案 甚至我的书也没有具体说明 所以我有点迷失了 值得一提的是 我正在寻找除了在图形中使用时称为 顶点 和在树中使用时称为 节点 这一事实之外的区别 单词之间没有区别Node and V
  • 具有实体框架的简单多租户 Web 应用程序的解决方案

    我正在开发一个多租户 Web 应用程序 堆栈 MVC 4 实体框架 4 3 我的要求非常简单 每个租户都有相同的 UI 和 CodeBase 在我的数据库中 我有一些带有 TenantId 字段的表 以及其他没有的表 我已经建立了一个非常简
  • Django Rest Framework 对象不可迭代?

    我已经序列化了我的一个带有外键的模型 我得到 Parent object is not iterable 模型 py class Parent models Model Parent data class Child models Mode
  • .NET Framework 4.0 中的水晶报表

    我们已经编写了一个 WPF 应用程序 NET 3 5 using 视觉工作室2010 该解决方案由 8 个项目组成 全部编译于 NET 3 5 该应用程序使用水晶报表 目标操作系统是 Windows 7 最近 启动项目被编译在 NET 4
  • 序数日期的格式(带有后缀 -st、-nd、-rd、-th 的月份中的某天)

    我错过了什么吗 我不知道如何将以下内容转换为Dates 其中该月的某天 d 具有序数后缀 st nd rd th ord dates lt c September 1st 2016 September 2nd 2016 September