在数据框中搜索最近的日期

2023-12-12

我有两个数据框:

purchases:

                time        quantity
  1: 2013-07-31 03:42:02    30       
  2: 2013-07-31 03:59:32    30        
  3: 2013-07-31 04:02:22    28       
  ....

history:

                time        price
  1: 2013-07-31 04:26:46   10
  2: 2013-07-31 07:11:01    10
  3: 2013-07-31 08:16:36     5
  4: 2013-07-31 08:40:03     8
  5: 2013-07-31 08:47:56     7
  ....

我想做的事: 对于“购买”中的每一行,在“历史记录”中查找日期最接近的行(如果可能小于“购买”中的行)

我试图做这样的事情

history <- as.vector(history$time)

对于购买中的每一行:

current.price <- purchases[i,]$time
which(history-current.price)==min(history-current.price)

如果值是数字,这很有用,但我不知道如何处理 POSIXct 类的这些日期。

EDIT:添加了可重现的数据

#Reproducible dummy data
p <- read.table(text="
t,quantity
2013-07-31 03:42:02,30
2013-07-31 03:59:32,30
2013-07-31 04:02:22,28",header=TRUE,sep=",")
h <- read.table(text="
t,price
2013-07-31 04:26:46,10
2013-07-31 07:11:01,10
2013-07-31 08:16:36,5
2013-07-31 08:40:03,8
2013-07-31 08:47:56,7",header=TRUE,sep=",")
#Convert to POSIXct
p$t <- as.POSIXct(strptime(p$t, "%Y-%m-%d %H:%M:%S"))
h$t <- as.POSIXct(strptime(h$t, "%Y-%m-%d %H:%M:%S"))

这是一个使用的解决方案difftime。我已经更新了您的示例,使其某些行的日期晚于历史表中的日期。

#Reproducible dummy data
p <- read.table(text="
t,quantity
2013-07-31 03:42:02,30
2013-07-31 03:59:32,30
2013-07-31 04:02:22,28
2013-07-31 04:40:22,28
2013-07-31 05:50:22,28
2013-07-31 08:40:22,28",header=TRUE,sep=",")
h <- read.table(text="
t,price
2013-07-31 04:10:46,10
2013-07-31 04:35:46,10
2013-07-31 07:11:01,10
2013-07-31 08:16:36,5
2013-07-31 08:40:03,8
2013-07-31 08:47:56,7",header=TRUE,sep=",")
#Convert to POSIXct
p$t <- as.POSIXct(strptime(p$t, "%Y-%m-%d %H:%M:%S"))
h$t <- as.POSIXct(strptime(h$t, "%Y-%m-%d %H:%M:%S"))


get_closest_line_in_history <- function(x, history){
  time_diffs <- difftime(x, history)
  time_diffs[time_diffs<0] <- NA

  res <- which.min(time_diffs)
  if (length(res) != 1){
    return(NA)
  }else{
    return(res)
  }
}

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

在数据框中搜索最近的日期 的相关文章

  • 是否可以使用像“tz=NULL”这样的东西?...“as.POSIXct”默认为依赖于语言环境的时区(与“as.Date”不同),这会导致问题

    我知道这是一个长期存在 根深蒂固的问题 但这是我经常遇到的问题 而且我看到初学者R经常与此斗争 我希望有一个令人满意的解决方案 到目前为止 我的谷歌和 SO 搜索都是空的 但如果在其他地方重复 请指出正确的方向 TL DR 有没有办法使用类
  • 有没有办法将字母扩展到超过 26 个字符,例如 AA、AB、AC...?

    我大部分时间都使用字母来表示我的因素 但今天我尝试超过 26 个字符 LETTERS 1 32 期待有自动递归因式分解 AA AB AC 但很失望 这只是字母的限制还是有办法使用其他函数来获取我正在寻找的内容 702够吗 LETTERS70
  • 如何在 django 模板中将整数形式的 unix 时间戳转换为人类可读的格式?

    我将日期作为整数字段存储在数据库中 并将其称为时间戳 当我在模板中显示它时 我尝试使用 timestamp date D d M Y 但是 这不会为我输出任何内容 我做错了什么吗 编辑 抱歉 拼写错误 我确实在代码中放置了 date 而不是
  • 如何编写一个也接受字符输入的 NES 函数?

    我正在开发一个将字符串作为函数参数的 R 包 现在我想使用非标准评估来允许非字符串输入 另外 为了保持向后兼容性 我想保留函数接受字符串的可能性 哈德利给出了example https cran r project org web pack
  • 使用 dplyr 和 ggplot 绘制包括负值的多面水平发散堆积条形图

    我希望这个例子能够让人清楚 我想要堆叠条形 其中中间条形跨越 0 因为它代表中性值 这与李克特量表一起使用 为了重现性 我使用钻石数据集 以下示例与我的用例足够接近 并演示了我很难以正确的顺序获取 好 或 正 数据 因此中性最接近 0 这是
  • 如何使用 ggplot 绘制矩阵图

    我想可视化一个矩阵 MAT lt matrix c 100 7 0 0 49 0 0 0 49 nrow 3 ncol 3 gt MAT 1 2 3 1 100 7 0 2 0 49 0 3 0 0 49 然而 标准方法不能正确地对小数字进
  • 两个闪亮的操作按钮

    我正在编写一个闪亮的函数 其中包含两个操作按钮 这两个按钮是左右按钮 单击时可以帮助绘图移动 第一次单击时 这两个按钮都工作正常 当我重新单击它们时 就会出现问题 无论我单击哪个按钮 它都会在两个范围之间来回弹跳 我猜可能是 右 和 左 按
  • 使用 dplyr 按组计算加权平均值(并复制其他方法)

    我对语法感到困惑dplyr当尝试计算加权平均值时 我听从大卫的建议here https stackoverflow com a 27609266 1457380 语法非常透明 因此很有吸引力 但它似乎没有按我的预期工作 低于加权平均值是针对
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • 如何在 pandas 数据框中移动日期(添加 x 个月)?

    我有一个包含日期列的数据框 我知道如何将日期移动固定的月份数 例如 向 x 列中的所有日期添加 3 个月 但是 我无法弄清楚如何将日期移动几个月 这不是固定的 而是数据框的另一列 有任何想法吗 我在下面复制了一个最小的例子 我得到的错误是
  • R 包“raster”在搜索“terra”最新版本时无法上传

    我正在 Windows 10 中使用 RStudio 2021 09 2 中的 R 4 1 2 工作 我正在处理空间数据 包括矢量和栅格 但三天前命令库 栅格 开始向我发出此警告 错误 loadNamespace i c lib loc l
  • 根据感兴趣的特定单词绘制高度相关的单词[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试绘制一个单词的最高相关性 例如 我想绘制 鲸鱼 一词的最高十个相关性的图表 有人可以帮我执行类似的命令吗 如果有帮助的话我已经安装
  • 对 R/Sweave 进行编程以获得正确的 \Sexpr 输出

    我在为 Sweave 进行 R 编程时遇到了一些问题 rstats twitter 小组经常指出这里 所以我想我应该把这个问题向大家提出 我是一名分析师 而不是程序员 所以在我的第一篇文章中请放轻松 问题是 我正在使用 R 在 Sweave
  • 是否可以在 R 中创建自定义 pch 形状?

    R 中的许多绘图函数都使用图形参数pch指定数据点的形状 根据R 文档 https www rdocumentation org packages graphics versions 3 6 2 topics points 有 26 个矢量
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 在 R 中高效加载稀疏矩阵

    我在将数据有效加载到 R 中的稀疏矩阵格式时遇到问题 这是我当前策略的 不完整 示例 library Matrix a1 Matrix 0 5000 100000 sparse T for i in 1 5000 a1 i idxOfCol
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 如何解决 R 估计中的整数溢出错误

    我正在尝试使用估计模型speedglm在 R 中 数据集很大 约 6988 万行和 38 列 行数和列数相乘得到约 27 亿 超出了整数限制 我无法提供数据 但以下示例重现了该问题 library speedglm large exampl

随机推荐

  • 在 Grails 中解析 CSV 并导出到 Mysql 数据库

    我是 Groovy Grails 的新手 我想提交解析 CSV 文件并导出到 MySQL 数据库的多个表中 我看过一些编码 但作为新手 这让我感到困惑 那么任何人都可以帮助我理解简单的 csv 文件解析并导出到 MySQL 数据库 谢谢 索
  • 适用于 Android 的 pdf 查看器库

    我知道这个问题已经被问过好几次了 但我找不到一个令人满意的答案 我的要求很简单 只需在我的应用程序 android 中打开pdf文档 但我无法找到一种简单的方法来做到这一点 它的原生 c c 方式或编写自己的引擎 但是没有任何简单的 API
  • 如何在dygraphs中设置特定的y轴标签点?

    Dygraphs 通常会根据轴的大小 标签的大小等自动选取 Y 和 X 轴标记点 在某些情况下 它会选取导致清晰度较低的标记点 例如 在 Y 轴值为 0 到 10 的图表上 它标记为 0 4 和 8 至少对于特定尺寸的图表而言 我希望将其标
  • wpf/silverlight 应用程序到 DVD

    如何转换 wpf silverlight 应用程序 使其可以在 DVD 上运行 我们有用于学习目的的 wpf 应用程序 我们希望创建该应用程序的 DVD 版本并将其提供给我们的用户 以便他们可以回家使用它们 任何建议将不胜感激 我们已经查看
  • 如何使用 sed 仅替换第二个匹配行

    cat file cat cat dog cat dog puppy dog cat 使用 sed sed s dog big dog my file gt new file cat new file cat cat big dog cat
  • 如何让 Eclipse 解析 MongoDB\BSON 命名空间中的 php 类?

    经过多次来来去去 我成功安装了 PHP 5 6 的 MongoDB 驱动程序 并使其在 OSX El Capitan 上运行 它的工作方式是使用Homebrew 为了开始处理项目 我为该项目创建了文件夹并使用Composer安装了我需要的必
  • Hive 查询在生成缺失日期时面临问题

    我有一个要求 我需要返回到列的先前值 直到 1000 行 并获取之前的 1000 个日期以用于下一步 但是表中该列不存在所有这些先前的 1000 个日期 但我需要从查询的输出中获取那些缺失的日期 当我尝试运行下面的查询时 它没有显示当前日期
  • 如何在 Android 中获取当前日期?

    我写了下面的代码 Date d new Date CharSequence s DateFormat format MMMM d yyyy d getTime 我想要字符串格式的当前日期 例如 28 Dec 2011 这样我就可以将它设置为
  • 如何将PCM原始数据转换为mp3文件?

    编辑我的问题 是否有从 PCM 原始数据到任何音频文件的编码器 mp3 ogg 但不是WAV 因为它太大了 我有一个包含原始 PCM 数组的文本文件 我想将其转换为 mp3 ogg 文件 经过长时间的搜索 我找不到一些提供这种编码 PCM
  • azure blob存储和azure data Lake存储之间的区别[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 对于像我这样的用户来说 这似乎很困惑 因为 azure blob 存储和 azure data Lake 存储之间的主要区别是什么 以及在什么用户情况下 azure blob 存储比 az
  • 输出时区感知的 django 日期时间字段,无需过滤器

    您好 我升级到 django 1 4 我想利用时区支持 我在 postgres 中保存了一些日期时间字段 并且在我设置后 它们是假设我所在城市的时区保存的 USE TZ True 并将时区设置为我的城市 模板中的日期过滤器标签输出正确的小时
  • 文件重写:一行大于变量的最大大小。解决方法?

    我需要替换文件中的一行 一般来说 这段代码可以正常工作 这个问题不需要这个块正在做什么的实际细节 for F tokens 1 delims a in findstr N DATA do if a equ TargetLine echo i
  • WPF:control.ItemContainerGenerator.Status 为未启动。我如何告诉它现在开始?

    我的控件 ItemContainerGenerator Status 为 NotStarted 我如何告诉它现在开始并等待它完成 如果您执行一些同步操作 您可能需要手动启动生成器 在将其分块到页面上之前 我必须生成结果视图来测量它 IIte
  • Django 中不会自动加载语言文件

    我在我的应用程序中使用 python3 和 Django 1 10 而且我对 Django 有点陌生 我计划为 Django 管理面板提供多种语言 当我遵循 Django 文档中的规则时 我发现我必须使用中间件进行本地化 以下是我的设置 M
  • 如何从元组数组中查找元组元素的索引? iOS、斯威夫特

    这是在 tableview cellforrowatindexpath 内部 var valueArray String String if contains valueArray v title status let v title st
  • SQL数据源参数

    如何在后面的代码中为 sqlDatasource 设置 sql 参数 我正在尝试这样 int id 1 SqlDataSource1 SelectCommand SELECT FROM categ WHERE id id SqlDataSo
  • 在 JavaScript 中获取从一个 LatLng 到另一个 LatLng 的度数 (0-360)

    有人可以帮我用原生 JavaScript 来填补空白吗 function getHeading lat1 lon1 lat2 lon2 Do cool things with math here return heading Should
  • 为什么 Collections.binarySearch() 与此不具有可比性?

    我有这个Player实现的类Comparable界面 然后我有一个ArrayList of Players 我正在尝试使用binarySearch 在名单上Player找到一个Player 但是 Java 给了我一个 cannot find
  • Java 字符串操作:比较 Java 中的相邻字符

    我有以下问题给定一个字符串 返回一个 已清理 的字符串 其中相同的相邻字符已减少为单个字符 所以 yyzzza yields yza stringClean yyzzza yza stringClean abbbcdd abcd strin
  • 在数据框中搜索最近的日期

    我有两个数据框 purchases time quantity 1 2013 07 31 03 42 02 30 2 2013 07 31 03 59 32 30 3 2013 07 31 04 02 22 28 history time