计算时间间隔

2023-12-07

我正在构建一些基于这篇有用的帖子。 我对数据集有三个相关问题df:

    machine     ISOdatetime
1   M1      2013-08-21 18:16:39
2   M1      2013-08-21 18:20:44
3   M1      2013-08-21 18:21:42
4   M1      2013-08-21 18:46:09
5   M1      2013-08-21 18:46:27
6   M1      2013-08-21 19:01:13
etc

我想弄清楚半小时内出现了多少个值并放入一个新的数据帧中,如下所示:

    machine     ISOdatetime     numberobs
1   M1      2013-08-21 18:30:00     3
2   M1      2013-08-21 19:00:00     2
3   M1      2013-08-21 19:30:00     1
etc

当然,以下代码对于整齐的每小时长度来说效果很好:

df2 <- data.frame(table(cut(df$ISOdatetime, breaks="hour")))

以下代码以 30 分钟为单位进行计数,但不会在每小时/半小时点整齐地开始(它从第一个列出的时间 18:16:39 开始,并指定开始时间为 18:16:00):

df2 <-data.frame(table(cut(df$ISOdatetime, breaks = "30 mins")))

问题 1. 什么可能是一个优雅的解决方案?我应该用类似的东西指定所需的间隔吗ints <-c("18:00", "18:30", "19:00" ...),还是没有必要?

问题2.我想当我到达原始数据帧的部分时我也会遇到麻烦df具有“M2”值的df$machine因为它也会计算这些。我最终会想单独绘制每台机器。也许使用subset对于每台“机器”将是一种对数据进行分区的快速方法,但随后我将为每台“机器”得到一个数据框。不是问题,但是有没有一种优雅的方法可以将“machine”构建到上面的命令中?

问题 3. 在上一篇文章,它们的计数显示在“每小时的顶部”,这可能是每小时间隔的“结束时间”。但用他们提供的小数据集来检查这一点并不容易。根据我自己的数据,计数似乎已经结束。如果break=hour,我应该期望计数的目的是什么?

最近几个小时已经阅读和尝试了很多,但仍然卡住了,非常感谢帮助。

#

根据要求,我添加了更多信息。

我的实际数据

    unit    nightof     time        date        isodatetime             time2
1   7849    2013-08-21  18:16:39    2013-08-21  2013-08-21 18:16:39     2013-08-22 04:00:00
2   7849    2013-08-21  18:20:44    2013-08-21  2013-08-21 18:20:44     2013-08-22 04:00:00
3   7849    2013-08-21  18:21:42    2013-08-21  2013-08-21 18:21:42     2013-08-22 04:00:00
etc
406 7849    2013-08-21  04:06:10    2013-08-22  2013-08-22 04:06:10     2013-08-22 14:00:00
407 7849    2013-08-21  04:06:12    2013-08-22  2013-08-22 04:06:12     2013-08-22 14:00:00
408 7849    2013-08-21  04:06:28    2013-08-22  2013-08-22 04:06:28     2013-08-22 14:00:00

When I str()

'data.frame':       408 obs. of  6 variables:
$ unit:         int  7849 7849 7849 7849 7849 7849 7849 7849 7849 7849 ...
$ nightof:  Date, format: "2013-08-21" "2013-08-21" "2013-08-21" "2013-08-21" ...
$ time:     List of 408
..$ : chr "18:16:39"
..$ : chr "18:20:44"
.. [list output truncated]
$ date:     Date, format: "2013-08-21" "2013-08-21" "2013-08-21" "2013-08-21" ...
$ isodatetime:  POSIXlt, format: "2013-08-21 18:16:39" "2013-08-21 18:20:44" "2013-08-21 18:21:42" "2013-08-21 18:21:48" ...
$ time2:        POSIXct, format: "2013-08-22 04:00:00" "2013-08-22 04:00:00" "2013-08-22 04:00:00" "2013-08-22 04:00:00" ...

我使用的修改后的代码:

`mon$time2 <- with(mon, as.POSIXct(ceiling(as.numeric(isodatetime)/(30*60)) * (30*60), origin = "1970-01-01"))
with(mon, data.frame(table(time2)))
by(mon, mon$unit, function(x){data.frame(table(x$time2))})`

输出。

mon$unit:   7849
                Var1        Freq
1   2013-08-22 04:00:00     27
2   2013-08-22 04:30:00     13
3   2013-08-22 05:00:00     16
4   2013-08-22 05:30:00     5
5   2013-08-22 06:00:00     8
6   2013-08-22 06:30:00     10
7   2013-08-22 07:00:00     25
8   2013-08-22 07:30:00     22
9   2013-08-22 08:00:00     61
10  2013-08-22 08:30:00     93
11  2013-08-22 09:00:00     54
12  2013-08-22 09:30:00     42
13  2013-08-22 10:00:00     11
14  2013-08-22 10:30:00     2
15  2013-08-22 11:00:00     2
16  2013-08-22 11:30:00     3
17  2013-08-22 12:00:00     2
18  2013-08-22 13:00:00     1
19  2013-08-22 14:00:00     11

您可以使用lubridate包从日期对象中提取小时、分钟等。如果您知道事件时间的分钟,您就知道事件发生在哪半个小时。我用两台机器采样了一些数据。我添加了事件发生后“整个”半小时的变量,然后您就可以计算这些。希望这就是你所追求的,祝你好运。

require(lubridate)
set.seed(1234)
example.dat <- data.frame(
  machine = paste("M", sample(1:2, 100, replace = T), sep = ""),
  dates = sort(as.POSIXct(sample(1377100000:1377110000, 100), origin = "1960-01-01"))
  )
example.dat <- example.dat[order(example.dat$machine), ]

halfHours <- ifelse(minute(example.dat$dates) < 30, 0, 30)
example.dat$datesHH <- example.dat$dates
minute(example.dat$datesHH) <- halfHours; second(example.dat$datesHH) <- 0

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

计算时间间隔 的相关文章

随机推荐

  • 在第一个“.”之前获取一个字符串与 PHP

    Lorem Ipsum 只是印刷和排版行业的虚拟文本 from Lorem Ipsum 只是印刷和排版行业的虚拟文本 自 1500 年代以来 Lorem Ipsum 一直是行业标准的虚拟文本 当时一位不知名的印刷商拿走了一堆字体并将其打乱以
  • 从列表中进行互斥随机抽样

    input beleriand mordor hithlum eol morgoth melian thingol 我在创建 X 个大小为 Y 的列表而不重复任何元素时遇到问题 我一直在做的是使用 x 3 y 2 import random
  • 在android上解密php加密数据

    An Android客户端 4 2 1 应用程序通过HttpPost请求给一个PHP 5 6 API 该 API 使用以下方式加密数据AES合规的RIJNDAEL 128 然后使用 OpenSSL 公共加密的客户端公钥对 AES 加密的密钥
  • 如何在 C++ 中使用可以具有多种数据类型的单个变量

    一个变量怎么可以有两种数据类型 如果 月 是一个变量 它应该从 std cin 的输入中获取 我应该怎么做才能让用户输入 January 这样的字符串或输入像 1 这样的整数 在 C 17 中 我们得到了名为 std variant 的东西
  • 如何使用Enquire.Js?

    查询 js是一个为 Javascript 重新创建 CSS 媒体查询的 Javascript 这意味着您可以将 Javascript 封装在媒体查询中 就像您将 CSS 包装在媒体查询中一样 我不太确定如何使用它 本教程说 enquire
  • maven pom.xml如何识别非标准项目结构中的testng测试用例?

    我对 Maven 和 testng 完全陌生 我使用 Maven 作为构建工具 使用 testng 作为测试框架 我没有遵循标准的 Maven 项目结构 现在我想要我的pom xml在我的项目中执行测试用例 问题是 如何pom xml知道执
  • 从 firebase 数据库检索计算平均值

    我正在创建一个 iOS 应用程序 该应用程序使用每个地点的地名和评级 我已经把事情做好了 我的意思是 我将数据保存到数据库中 并且我也可以读取它们 唯一的问题是 当我阅读它们时 我希望它们通过计算每个位置的平均值来加载到我的 tablevi
  • postgres:在字符串中搜索多个单词

    我正在为我的公司后台系统实施基本形式的搜索 我想找到包含搜索查询中所有单词的所有产品名称 所以如果我有这两种产品 Deodorant with cucumber flavor Deoderant with apple flavor 搜索查询
  • jquery中如何获取textarea的值?

    我有这个表格 我试图从文本区域获取值 由于某种原因它不想这样做
  • 使用 FileResult 在 Asp.Net MVC 中下载任何类型的文件?

    有人建议我应该使用 FileResult 来允许用户从我的 Asp Net MVC 应用程序下载文件 但我能找到的唯一示例始终与图像文件有关 指定内容类型 image jpeg 但是如果我不知道文件类型怎么办 我希望用户能够从我网站的文件区
  • 如何使用 selenium webdriver 在 C# 中以私有模式启动 IE

    我开始将 selenium Webdriver 与 c 和 Visualstudio 一起使用 我想以私有模式启动 Internetexplorer 所以我在测试期间不必关心旧的浏览数据 我现在搜索了很长时间才找到如何做到这一点 遗憾的是我
  • Fluent NHibernate 强制外键引用不可为空

    刚刚接触一些 Fluent NHibernate AutoMap 约定 并遇到了一些我无法弄清楚的事情 我想我只是没有找对地方 基本上试图在一对多关系的 多 方面强制执行 NOT NULL 看起来 使用自动映射 它总是使数据库中的父属性 I
  • timezone_name_from_abbr() 无法正确识别

    基本上我的网站是全球性的 我需要能够检测用户的时区并显示准确的时间 我有一个非常简洁的脚本 直到现在它都可以完美地工作 它需要一个时区偏移量 我用 javascript 获取并通过 cookie 传递该时区偏移量 if empty COOK
  • Django 管理后端“操作错误”尝试写入只读数据库

    这个问题似乎已被问过很多次 但我检查过的所有解决方案尚未对我有用 我在跑步nginx在安装了 Django 1 6 1 的 Ubuntu 14 04 服务器上 我正在尝试为项目使用默认的 django 管理后端 通常位于 localhost
  • #1067 - “bonusid”的默认值无效,我该如何修复此错误?

    SQL查询 CREATE TABLE bonus bonusid INT 10 DEFAULT 0 NOT NULL AUTO INCREMENT empid INT 10 DEFAULT 0 NOT NULL datebonus DATE
  • 如何通过参数操作保护 REST API 免受重放攻击?

    我正在开发安全支付 API 我希望通过操纵 url 中的参数来避免重放攻击 例如在以下 API 调用中 一旦执行此 API 调用 具有足够知识的人就可以通过修改这三个参数中的任何一个来执行相同的 API 调用 以满足他 她自己的利益 我曾想
  • jquery - 滑动切换不平滑

    我有一个问题slideToggle函数于jQuery 一点也不顺利 每当我单击 查看更多 按钮时 应该显示的内容slideToggle 只是弹出 没有任何效果 这是 HTML 代码 td class third a href class b
  • C++ -- Detours (Win32 API 劫持) -- 劫持类方法

    我很长一段时间都没有遇到 Detours 劫持功能的问题 当我尝试劫持类方法时 在我的例子中是来自 mshtml dll 的 IHTMLDocument2 write 我遇到了无尽的问题 主要是类型不匹配 由于我在网上没有找到任何相关示例
  • Laravel 5:仅在一个 URL 上路由 CORS 问题

    我正在尝试向外部 laravel 站点发出 2 个 ajax 请求 其中一个请求完美运行 列表 另一个 savedevice 给我以下错误 访问 XMLHttpRequest 位于 http localhost somesite devic
  • 计算时间间隔

    我正在构建一些基于这篇有用的帖子 我对数据集有三个相关问题df machine ISOdatetime 1 M1 2013 08 21 18 16 39 2 M1 2013 08 21 18 20 44 3 M1 2013 08 21 18