使用 df2 的日期时间中 df1 的“小时”和“分钟”的条件合并 2 个数据帧

2023-12-02

我有一个数据框df.sample像这样

id <- c("A","A","A","A","A","A","A","A","A","A","A")
date <- c("2018-11-12","2018-11-12","2018-11-12","2018-11-12","2018-11-12",
          "2018-11-12","2018-11-12","2018-11-14","2018-11-14","2018-11-14",
          "2018-11-12")
hour <- c(8,8,9,9,13,13,16,6,7,19,7)
min <- c(47,59,6,18,22,36,12,32,12,21,47)
value <- c(70,70,86,86,86,74,81,77,79,83,91)
df.sample <- data.frame(id,date,hour,min,value,stringsAsFactors = F) 
df.sample$date <- as.Date(df.sample$date,format="%Y-%m-%d")

我有另一个数据框df.state像这样

id <- c("A","A","A")
starttime <- c("2018-11-12 08:59:00","2018-11-14 06:24:17","2018-11-15 09:17:00")
endtime <- c("2018-11-12 15:57:00","2018-11-14 17:22:16","2018-11-15 12:17:32")
state <- c("Pass","Pass","Pass")

df.state <- data.frame(id,starttime,endtime,state,stringsAsFactors = F) 
df.state$starttime <- as.POSIXct(df.state$starttime,format="%Y-%m-%d %H:%M:%S")
df.state$endtime <- as.POSIXct(df.state$endtime,format="%Y-%m-%d %H:%M:%S")

我正在尝试根据条件合并这两个数据框

if the hour and min in df.sample是在starttime and endtime of df.state,然后合并state = Pass in the df.sample.

例如,第 2 行df.sample has hour = 8, min = 59并且由于它在starttime = 2018-11-12 08:59:00 in df.state, 价值Pass被添加

这是我的期望的输出

   id       date hour min value state
    A 2018-11-12    8  47    70      
    A 2018-11-12    8  59    70  Pass
    A 2018-11-12    9   6    86  Pass
    A 2018-11-12    9  18    86  Pass
    A 2018-11-12   13  22    86  Pass
    A 2018-11-12   13  36    74  Pass
    A 2018-11-12   16  12    81      
    A 2018-11-14    6  32    77  Pass
    A 2018-11-14    7  12    79  Pass
    A 2018-11-14   19  21    83      
    A 2018-11-12    7  47    91      

我能够像这样合并这两个数据帧,但无法在 df.state 的开始时间和结束时间中查找 df.sample 的小时和分钟

library(tidyverse)
df.sample <- df.sample %>%
  left_join(df.state)

有人能指出我正确的方向吗


使用非等值连接 fromdata.table如果您碰巧有大数据框,则打包会更快更容易: 基准 | Video

library(data.table)

## convert both data.frames to data.tables by reference
setDT(df.sample)
setDT(df.state) 

## create a `time` column in df.sample 
df.sample[, time := as.POSIXct(paste0(date, " ", hour, ":", min, ":00"))]
## change column order
setcolorder(df.sample, c("id", "time"))

# join by id and time within start & end time limits
# "x." is used so we can refer to the column in other data.table explicitly
df.state[df.sample, .(id, time, date, hour, min, value, state = x.state), 
         on = .(id, starttime <= time, endtime >= time)]
#>     id                time       date hour min value state
#>  1:  A 2018-11-12 08:47:00 2018-11-12    8  47    70  <NA>
#>  2:  A 2018-11-12 08:59:00 2018-11-12    8  59    70  Pass
#>  3:  A 2018-11-12 09:06:00 2018-11-12    9   6    86  Pass
#>  4:  A 2018-11-12 09:18:00 2018-11-12    9  18    86  Pass
#>  5:  A 2018-11-12 13:22:00 2018-11-12   13  22    86  Pass
#>  6:  A 2018-11-12 13:36:00 2018-11-12   13  36    74  Pass
#>  7:  A 2018-11-12 16:12:00 2018-11-12   16  12    81  <NA>
#>  8:  A 2018-11-14 06:32:00 2018-11-14    6  32    77  Pass
#>  9:  A 2018-11-14 07:12:00 2018-11-14    7  12    79  Pass
#> 10:  A 2018-11-14 19:21:00 2018-11-14   19  21    83  <NA>
#> 11:  A 2018-11-12 07:47:00 2018-11-12    7  47    91  <NA>

### remove NA
df.state[df.sample, .(id, time, date, hour, min, value, state = x.state), 
         on = .(id, starttime <= time, endtime >= time), nomatch = 0L]
#>    id                time       date hour min value state
#> 1:  A 2018-11-12 08:59:00 2018-11-12    8  59    70  Pass
#> 2:  A 2018-11-12 09:06:00 2018-11-12    9   6    86  Pass
#> 3:  A 2018-11-12 09:18:00 2018-11-12    9  18    86  Pass
#> 4:  A 2018-11-12 13:22:00 2018-11-12   13  22    86  Pass
#> 5:  A 2018-11-12 13:36:00 2018-11-12   13  36    74  Pass
#> 6:  A 2018-11-14 06:32:00 2018-11-14    6  32    77  Pass
#> 7:  A 2018-11-14 07:12:00 2018-11-14    7  12    79  Pass

Created on 2019-05-23 by the reprex package (v0.3.0)

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

使用 df2 的日期时间中 df1 的“小时”和“分钟”的条件合并 2 个数据帧 的相关文章

  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 如何在 ggplot 中保持配色方案,同时删除每个图中未使用的级别?

    我想比较一个图中的数据的一些子组和另一图中的一些其他子组 如果我绘制一个图 其中绘制了所有子组 那么这个数字将是巨大的 并且每个单独的比较都会变得困难 我认为如果给定的子组在所有图中都具有相同的颜色 这对读者来说会更有意义 这是我尝试过的两
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 如何用外部图像填充地图边界?

    我正在创建一张带有州边界的巴西地图 这可以直接使用ggplot2 and geom sf 然而 这一次 我不想用数据填充每个状态的颜色 而是想用外部图像 png 填充每个状态的边界 类似于this https online olivet e
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 通用冒泡排序扩展

    public static T BubbleSort
  • 对project.pbxproj 文件中已删除框架的引用

    我最近从我的 iOS 项目中删除了一个框架 并通过依赖项管理器 CocoaPods 安装它 然而 我注意到 在检查对源代码管理的更改时 删除了对框架的一些引用 但添加了一个绝对路径 从差异中 第一行被删除 第二行添加到我的项目文件中 767
  • 如何重置 Redux 存储的状态?

    我正在使用 Redux 进行状态管理 如何将商店重置为初始状态 例如 假设我有两个用户帐户 u1 and u2 想象一下以下事件顺序 User u1登录应用程序并执行某些操作 因此我们在商店中缓存一些数据 User u1注销 User u2
  • 基于 JWT 的身份验证、验证和授权方案的 Spring Security 过滤器,举例

    Java Spring 和 Spring Security 有兴趣使用不记名令牌为我的 Web 服务实现基于 JWT 的身份验证机制 我的理解使用 Spring Security 进行身份验证和授权的正确方法是通过使用提供的 或自定义的 过
  • 设置 open_basedir 时无法使用 cURL 跟踪位置 (URL) - API 回调失败

    向 API 发布值的现有方法根据 API 文档 必须将表单发布到 API URL 方法 POST 和操作 API URL 其中包含一些输入字段和客户令牌字段 API 处理然后将响应发布到我的服务器上的callback php 文件 已修复
  • 删除 CFStringTransform 结果中的撇号

    我正在将俄语 或任何语言 字符串转换为好看的拉丁字符串 以便在 URL 中使用 例如example com obezd pedestala 我使用这段代码 CFMutableStringRef bufferRef bridge CFMuta
  • PHP 中的 SQL 查询返回 false

    我正在尝试在 PHP 中执行此查询 但它始终返回 false 我已经在 phpMyAdmin 中尝试过查询 它工作正常 所以如果有人能发现问题所在 那就太好了 另外 对于此类问题 我怎样才能获得更好的错误消息 以便我可以尝试解决问题 stm
  • 如何在不使用 NumberInt(...) 进行任何包装的情况下导出 mongodb?

    我想将mongodb导出为json 这里有一条记录 id oid 554f042c0e81bf483e4a4e2f batch 3 bz NumberInt 1 问题是当我使用 json 加载它时 json loads id oid 554
  • MS Access (MDB) 并发

    对于一个小型项目 我需要使用一个要求非常低的简单数据库 几个表 总共不超过几千条记录 2 或 3 个用户 我在 NET环境中工作 由于数据库服务器 即使是那些 Express 版本 在这种情况下似乎是一个巨大的杀伤力 一个非常简单的 MDB
  • 使用参数作为泛型类型,并为其指定默认值

    我有一个简单的课程Board带参数width height and types在构造函数中 高度和宽度始终具有类型number but types是任意类型的数组 我想做的是捕获的类型types使用泛型类型的参数
  • Javascript 正则表达式查找基本 URL

    我对 JS 中的这个正则表达式感到疯狂 var patt1 http s a z0 9 a z0 9 0 9 i 如果我给出像 http www eitb com servicios concursos 516522 这样的输入字符串 这个
  • JS 中的高阶函数

    我现在正在学习 JavaScript 我有一些问题 以下代码来自 Eloquent JavaScript 一书 function forEach array action for var i 0 i lt array length i ac
  • 将视图作为参数添加到自定义 ViewModifier

    这更多的是一个语法问题 我试图在不使用 AnyView 的情况下将视图传递到 ViewModifier 初始化程序中 目前我有一些使用 AnyView 运行的东西 但我想使用通用视图语法 就像您将 某些视图 传递到此答案中概述的视图一样 如
  • 通过字符串引用类名?

    我需要解析一些文本文件 为文本中遇到的各种实体创建对象 并将它们放入某种数据结构 例如列表 中以进行进一步处理 文本示例 laptop 17 dell weight 12 lb desktop 24 hp 我事先知道文本中可能存在哪些实体
  • 使用 Polybase 将数据并行加载到现有表中

    使用 CTAS 我们可以利用 Polybase 提供的并行性将数据加载到new以高度可扩展和高性能的方式创建表 有没有办法使用类似的方法将数据加载到existing桌子 桌子甚至可能是空的 创建外部表并使用INSERT INTO SELEC
  • 一个 StringToken 解析器,它提供 Google 搜索样式“您的意思是:”建议

    寻求一种方法 在字符串中采用空格分隔的标记 返回建议的单词 ie 谷歌搜索可以采取 拼音词翻译 并在结果页面顶部显示 您是说 拼音词翻译器 首选使用任何 C 语言或 Java 的解决方案 是否有任何现有的开放库可以执行此类功能 或者有没有办
  • 如何同时使用 Git 和 Dropbox? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 是否可以使用Git and Dropbox一起 我认为 Dropbox 上
  • WinRT 8.1 手机 - ListView 重新排序

    我需要在使用 WinRT 创建的 Windows Phone 8 1 应用程序中创建可重新排序的 ListView XAML 如下 它绑定到代码隐藏中的 ObservableDictionary
  • 如何在 Android 中使用 Google Places API for Web 服务?

    如何使用此链接返回 json 格式的结果 我已经有一个服务器密钥 但它一直显示 此 IP 站点或移动应用程序无权使用此 API 密钥 集成 Google Places API 的官方方式是通过 Android 实现 你可以使用地点选择器这是
  • 使用 df2 的日期时间中 df1 的“小时”和“分钟”的条件合并 2 个数据帧

    我有一个数据框df sample像这样 id lt c A A A A A A A A A A A date lt c 2018 11 12 2018 11 12 2018 11 12 2018 11 12 2018 11 12 2018