R data.table-具有不等式的复杂滤波器

时间:2019-03-26 14:30:11

标签: r data.table

这应该很容易解决,但是我被卡住了。

我有一个data.table,我需要对其进行复杂的过滤,如图所示。从本质上讲,它类似于excel中的索引功能,但是我需要以尽可能小的内存占用量来做到这一点。

我正在构建一个二维查询功能。将v1视为一个类别-只能是“一个”,“两个”或“三个”。将v2视为一系列数值。我首先指定v1。这将始终是“ ==”完全相等。然后,我想分配6,即我输入的exampledt[v1=="one" & v2 >= 6, v3 ]的值以获取相应的v3值。问题是6至少匹配两行。这是这里的问题,我想利用表索引来避免创建所有if(v2[i]>=排列。我需要将6分配给一个范围为(inf-16], (16-6],(6,-inf)

的向量

如果我输入“ 1”和6,我希望得到i = 1,j = 2的值。

如果我输入“ 1”和5,我希望得到i = 1,j = 3的值。

如果我输入“ 2”和17,我希望得到i = 2,j = 2的值。

我宁愿避免5.999的入侵,它也需要处理边界情况。我将如何使用不平等?我可以利用data.table索引吗?

enter image description here

  exampledt <- setDT(data.frame(

     c("one" , "one", "one",
       "two" , "two","two",
       "three" , "three", "three" ),

     (c(16,6, 5.9999 ,
        NA,6, 5.9999 ,
        NA,22,21.9999)
     )
     ,letters[1:9]
     ))
  colnames(exampledt)<-c("v1","v2","v3")

  #I tried this but the edge cases need additional logic which I need to avoid
  exampledt[v1=="one" & v2 >= 6, v3 ]

0 个答案:

没有答案