r - 在 R 中搜索数据框中的两列

标签 r search dataframe data.table

我有一个关于在 R 中搜索值的问题,它实际上有点类似于昨天发布的一个问题(如下所示: Searching a vector/data table backwards in R ),但我认为我的问题有点复杂(并且与我想做什么),而且由于我对 R 很陌生,所以我不太确定如何解决这个问题。

我有一个类似于下面给出的数据框,我希望找到我当前索引值的前一个索引值,其中 Times列与我当前的时间和 Midquote 不同列没有 NA值(value)。

Index               Times    |    Midquote
                -----------------------------
   1            10:30:45.58  |    5.319
   2            10:30:45.93  |    5.323
   3            10:30:45.104 |    5.325
   4            10:30:45.127 |    5.322
   5            10:30:45.188 |    5.325
   6            10:30:45.188 |    NA
   7            10:30:45.212 |    NA
   8            10:30:45.231 |    5.321
   9            10:30:45.231 |    5.321

如果我们从数据框的底部开始并将其作为“当前”时间,则会发现它位于索引 9 处,并且具有 Times 10:30:45.231 的值和 Midquote 5.321 的值,那么如果我想找到时间与我当前时间不同的第一个索引,我们看到这是索引7,它的时间为10:30:45.212 (因为索引 8 具有相同的时间)。但我们也看到,在索引 7 处 Midquote值为 NA所以我现在必须再次检查数据框。索引 6 再次具有不同的时间(即 10:30:45.188 )但它也有 NAMidquote 中再次值列,因此再次向上移动到索引 5,我们看到 Times列的时间与我当前的时间不同(即 10:30:45.188 再次)并且 Midquotes值为 5.325 .

因此,由于在索引 5 处,时间是 10:30:45.188 (这与我当前的时间是 10:30:45.231 不同)并且因为 Midquote索引 5 处的值不是 NA ,我希望获得输出“5”,因为它是满足这两个条件的索引值。

我的问题是,有没有好的方法可以做到这一点?如果这是一个简单的问题,我很抱歉,我对 R 很陌生,我对使用数据框知之甚少......

编辑:如果可能的话,我也想最好不要在数据框中添加另一列(如我上面提到的链接的最佳答案中给出的)

最佳答案

处理日期很困难,尤其是小数秒。
如果您可以将时间转换为 double ,则使用起来会更容易。
假设你的“时代”是为了你可以使用它

library(magrittr)
which(df$Times < df[9,1] & !is.na(df$Midquote)) %>% max()
which给出“索引”的向量,其中“时间”小于 9 并且“中间引用”不是 NA。 %>%将向量发送到 max()这给出了最高的值(value)。这很不优雅,但可以完成工作。

关于r - 在 R 中搜索数据框中的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44897056/

相关文章:

c# - 在 C# 中自动完成所有建议的三元搜索树

php - 为什么我的 PHP 搜索引擎找不到任何记录?

visual-studio - "in-line find"Visual Studio 插件

r - 错误 - 替换有 [x] 行,数据有 [y]

c++ - 加速 RcppArmadillo : How to link to OpenBlas in an R package

r - 当按其他数据框变量分组时,如何生成包含命名向量的列表列?

r - 如何仅打开一个文件的工作目录中的下一个文件夹?

python - 将 Python Pandas 中的列名从日期时间对象更改为字符串?

python - Pandas df.str.split() 仅在第一个元素上

r - 将不等长列表的列表转换为数据帧