如何获得具有多个单位的输出的时间差

2024-02-29

再会,

我在 as.POSIXct 中有两个日期列,格式为 YYYY-MM-DD HH:MM:SS。我想得到两者之间的差异,以天小时:秒的格式显示。这是一些虚拟数据:

    a<-c("2018-03-20 11:52:25 AST", "2018-03-20 12:51:25 AST", "2018-03-20 14:19:04 AST",
"2018-03-21 14:12:12 AST", "2018-03-21 12:09:22 AST", "2018-03-21 15:28:01 AST")

b<-c("2018-04-09 18:39:38 AST", "2018-06-23 19:13:14 AST", "2018-03-20 23:23:03 AST",
     "2018-05-10 21:29:28 AST", "2018-03-22 03:17:23 AST", "2018-05-12 00:19:39 AST")

ab<-data.frame(a,b)

这给出了这个数据框:

                        a                       b
 2018-03-20 11:52:25 AST 2018-04-09 18:39:38 AST
 2018-03-20 12:51:25 AST 2018-06-23 19:13:14 AST
 2018-03-20 14:19:04 AST 2018-03-20 23:23:03 AST
 2018-03-21 14:12:12 AST 2018-05-10 21:29:28 AST
 2018-03-21 12:09:22 AST 2018-03-22 03:17:23 AST
 2018-03-21 15:28:01 AST 2018-05-12 00:19:39 AST

我想得到a和b之间的差值,或者从时间b中减去时间a以获得X天X小时:X秒的输出。

我在下面使用了 difftime,并且单位设置不同:

ab$time_difference<-difftime(ab$b, ab$a)
ab
                            a                       b   time_difference
     2018-03-20 11:52:25 AST 2018-04-09 18:39:38 AST  486.786944 hours
     2018-03-20 12:51:25 AST 2018-06-23 19:13:14 AST 2286.363611 hours
     2018-03-20 14:19:04 AST 2018-03-20 23:23:03 AST    9.066389 hours
     2018-03-21 14:12:12 AST 2018-05-10 21:29:28 AST 1207.287778 hours
     2018-03-21 12:09:22 AST 2018-03-22 03:17:23 AST   15.133611 hours
     2018-03-21 15:28:01 AST 2018-05-12 00:19:39 AST 1232.860556 hours

我还尝试过以下方法:

ab$time_difference<-difftime(ab$b, ab$a,units=c("days","hours","seconds"))

但出现“单位”长度必须为 1 的错误。是否应该使用不同的命令,或者是否有任何方法可以让 difftime 产生更精确的时间差?

Thanks!


hms 库可以在这里提供一些帮助:

library(hms)
as.hms(ab$time_difference, format="%H:%M:S")
# 486:47:13
# 2286:21:49
# 09:03:59
# 1207:17:16
# 15:08:01
# 1232:51:38

有关其他选项,请参阅此问题:在 R 中将 difftime 输出为 HH:MM:SS:mm https://stackoverflow.com/questions/24702796/outputting-difftime-as-hhmmssmm-in-r

以下是上述问题答案中的代码:

Fmt <- function(x) UseMethod("Fmt")
Fmt.difftime <- function(x) {
   units(x) <- "secs"
   x <- unclass(x)
   NextMethod()
}
Fmt.default <- function(x) {
   y <- abs(x)
   sprintf("%s%02d:%02d:%02d:%02d", 
           ifelse(x < 0, "-", ""), # sign
           y %/% 86400,  # days
           y %% 86400 %/% 3600,  # hours 
           y %% 3600 %/% 60,  # minutes
           y %% 60 %/% 1) # seconds
}


a<-c("2018-03-20 11:52:25 AST", "2018-03-20 12:51:25 AST", "2018-03-20 14:19:04 AST",
     "2018-03-21 14:12:12 AST", "2018-03-21 12:09:22 AST", "2018-03-21 15:28:01 AST")

b<-c("2018-04-09 18:39:38 AST", "2018-06-23 19:13:14 AST", "2018-03-20 23:23:03 AST",
     "2018-05-10 21:29:28 AST", "2018-03-22 03:17:23 AST", "2018-05-12 00:19:39 AST")
ab<-data.frame(a,b)

#Passing two dates to  the function(s)
Fmt(as.POSIXct(ab$b)-as.POSIXct(ab$a))
#Passing a time difference in seconds
Fmt(difftime(ab$b, ab$a, units="secs"))

这里的关键是在脚本开始时运行函数定义的代码,以便这些函数可供使用。

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

如何获得具有多个单位的输出的时间差 的相关文章

随机推荐

  • Svelte商店功能更新

    Svelte 存储文档显示正在更新字符串或整数 但我没有在存储中找到任何动态函数 我不明白如何制作getData作为可写函数以通知 html 发生的变化 在下面的示例中 我想b后显示updateKey函数被调用 您将在此处找到 REPL 中
  • 将 OpenSSL 与自定义通道结合使用

    我 在 CPP 中 开发了一种基于 HTTP 的独特协议 并使用它与我的服务器进行通信 现在 我想通过我的专有协议建立 SSL 连接来传输数据本身 我可以使用 OpenSSL 来实现吗 我在网上搜索了所有与 BIO 相关的内容 但我不明白如
  • Objective C 中从 id 到 class 的动态类型转换

    我想在 Objective C 中动态转换并访问实例属性 这里有一个伪代码 id obj if condition1 obj Class1 fetchedResults objectAtIndex indexPath row else ob
  • Mocha 在测试中保留文件状态

    我有一个单元测试正在测试配置文件的更新 当然 在运行测试后 我的文件现在被更改了 我想我可以使用 之前 来缓存文件并在 之后 恢复它 mod require modtotest describe Device Configuration f
  • 在线时未呈现 Google+ 登录按钮

    我正在为我的新手机游戏开发一个社区网站 并尝试向其中添加 google plus 登录流程 实施过程中采取的步骤 gt 已关注this https developers google com web signin add button谷歌开
  • 检测HTML元素是否包含特定字符实体

    如果我有这样的标记 div xf067 div 我想稍后检测 div foo 是否仍然包含相同的字符实体 我希望能够通过将其与 xf067 而不是为了 在我的代码库中 出于维护目的 这相当迟钝 我尝试过这样的事情 使用 jQuery con
  • getBoundingClientRect().width 和 height 是否包括元素的填充和边框?

    Does getBoundingClientRect width and height属性 同时返回值包括元素的填充和边框 TLDR 它将始终返回尺寸边框框 下面的绿色框 其中包含内容区 填充区域 and 边区 如定义在CSS 盒子模型 h
  • 让 Android WebView 检测并弹出电子邮件对话框或电话对话框

    在 Android 上 当内置浏览器遇到电子邮件或电话号码并按下时 会出现一个对话框 但是 如果我导航到应用程序的 web 视图中的该 url 则情况不再如此 无论如何 我的 webview 在检测电子邮件和电话号码并在按下时弹出相应的默认
  • UndefinedFunctionError phoenix Elixir 新项目

    全新安装 Phoenix 后 我尝试触发一个新项目 当我尝试运行服务器时 我遇到了 Unchecked dependencies for environment dev gettext Hex package the dependency
  • Node.js 服务器启动速度非常慢

    我构建了一个小型 angular js Web 应用程序 托管在我的计算机上运行的 Node js 服务器上 当我启动节点服务器时 大约需要 30 35 秒 同事计算机上的完全相同的服务器需要 2 4 秒才能启动 我已在控制台中记录了时间
  • nhibernate 是否可以将查询作为 IDictionary 而不是实体类返回?

    我有一个实体人 public class Person public virtual int Id get set public virtual string FirstName get set public virtual string
  • iOS 魔法记录 & SQLCipher

    我正在使用 Magical Record 来保存我的数据 这些数据需要加密 所以我尝试将其与 SQLCipher 库结合起来 http sqlcipher net ios tutorial http sqlcipher net ios tu
  • 如何使用java的selenium web驱动程序获取特定optgroup下的选项?

    例如 我想从多选选项列表字段中选择特定 optgroup 下的选项
  • JNI GetByteArrayElements () 错误

    我是 JNI 的新手 所以我对 JNI 和英语都不熟悉 我的JNI项目是一个简单的文件读写 在 Java 中读取文件并将字节数组传递给 C API 然后使用 C 将其写入文件 我的源代码 Java代码是 public class FileI
  • 使用 jQuery 将活动类添加到导航中的当前页面

    我正在尝试将 活动 类添加到标题中当前页面的导航链接 我取得了一些进展 但遇到了一个小错误 希望得到一些帮助 我知道答案很明显 但是 我是 jQuery Javascript 的新手 我自己很难找到它 这是我的导航 HTML 结构
  • “这个分支有必须解决的冲突”但它已经合并了

    我合并了一个PR https github com DaniSchenk moment feiertage pull 8使用 GitHub Web 界面 成功解决了合并提交 https github com DaniSchenk momen
  • 关闭 websocket++ 连接

    当在 ASIO 模式下使用 Websocket 时 我开始连接 boost shared ptr
  • Rscript:没有名为...的包吗?

    我想使用 Rscript 以批处理模式运行 R 文件 但它似乎没有加载我需要的库 我收到的具体错误是 Error in library timeSeries there is no package called timeSeries Exe
  • 如何从 jQuery 函数内部的外部获取变量? [复制]

    这个问题在这里已经有答案了 我试图弄清楚如何从函数外部 jQuery 函数内部获取变量 但我得到Uncaught ReferenceError myvar is not defined 有什么办法可以做到这一点吗 我的代码的一个简单示例 f
  • 如何获得具有多个单位的输出的时间差

    再会 我在 as POSIXct 中有两个日期列 格式为 YYYY MM DD HH MM SS 我想得到两者之间的差异 以天小时 秒的格式显示 这是一些虚拟数据 a lt c 2018 03 20 11 52 25 AST 2018 03