我有一个关于从R中的数据帧中搜索和查找值的问题。让我们说我有一个包含大量不同列的数据框,并且数据框中有一个部分,例如:
Instrument | Time | Microsecond
-------------------------------------------
.... | .... | ....
-------------------------------------------
ABC | 10:32:40 | 420
-------------------------------------------
ABC | 10:32:40 | 422
-------------------------------------------
.... | .... | ....
现在,让我们也说我的值/字符串为:
时间:10:32:40
Microsecond:421
基本上,我想知道在R(或data.table
包)中是否有一个函数或方法允许我使用时间和微秒信息来搜索数据帧,这样它就能找到最近的'更低'值(或值等于)时间和微秒值。例如,对于Time:10:32:40和Microsecond:421我给出的信息,数据框中最接近的较低值是Time:10:32:40和Microsecond:420。
此外,我想找到最近的'鞋帮'数据帧中的值(或值等于),(对于上面的示例数据帧)将是时间:10:32:40和微秒:422。
最后,我想找到最接近的上/下值或(值等于)我所拥有的信息。我的意思是"价值等于"如果数据框中有一行完全等于我所拥有的信息(即时间:10:32:40和Microsecond:421)那么我想使用它而不是使用'最接近& #39;价值 - 直言不讳地说,如果数据框中的行信息与我拥有的信息完全相同,那么与“最接近的”信息相比,我的信息具有更高的优先级。值。
我还应该注意到,我希望能够找到"时间"的最接近的值。专栏除了" Microsecond"列,因为我可能需要在"时间"中舍入/舍入值。列。
是否有可以执行此操作的功能或方法?如果我说的不清楚,请告诉我。
答案 0 :(得分:0)
我认为处理它的最佳方法是只保留不重复的行
notDupes<- your_df[-duplicated(your_df),]
arrange(notDupes,Time, Microsecond)
然后,您将按升序排列所有相关时间,然后按升序显示微秒。一旦有序,您可以通过简单地连续三行来选择更高和更低的最近时间(首先测试是否有任何行重复)。
dupes<- your_df[duplicated(your_df),]
它不包括重复行的第一个实例,但包含所有以下重复项。
如果您想要整个列表,您可以反转订单并再次运行它,然后从另一个中减去一个并将差异添加到第一个。