Hi. Welcome to the list.

Short answer is you can't, not yet. However, the buzz phrase to search for
is "secondary key". That should bring up examples and discussions :
   i) manual secondary key
   ii) rekey using setkey
   iii) store a copy with a different key
   iv) merge()

Building in secondary keys is FR#1007
https://r-forge.r-project.org/tracker/index.php?func=detail&aid=1007&group_id=240&atid=978

HTH
Matthew

> R.experts,
> The following may be asked & answered but I was not able to find the
> answer. So here goes my first R-question.
> I am using data.table v1.8.1 to benefit from the :=  with by=.
>
> (stringAsFactors=F)
>
> Say I have
>>DT=data.table(expand.grid(ID=c("ID1","ID2","ID3"),Tx=c("Ctl","Low","Med
> ium","High"),>Target=c("IS","G1","G2")))
>>setkey(DT, Target,Tx,ID)
>>set.seed(1)
>>DT[,value:=rnorm(36)]
>
>
> ..and I want to subset the data.table with all "Ctl"  (i.e. from the
> second key Target) with a binary search.
> Doing this
>
>> DT["Ctl"]
>
> Does not generate the  desired result, because it searches under the
> first key for "Ctl"
>
>   Target ID Tx value TX
> 1:    Ctl NA NA    NA NA
>
>
> While vector search does
>> DT[Tx=="Ctl"]
>     ID  Tx Target      value
> 1: ID1 Ctl     IS  0.6107264
> 2: ID2 Ctl     IS -0.9340976
> 3: ID3 Ctl     IS -1.2536334
> 4: ID1 Ctl     G1  0.5939462
> 5: ID2 Ctl     G1  0.3329504
> 6: ID3 Ctl     G1  1.0630998
> 7: ID1 Ctl     G2 -1.2765922
> 8: ID2 Ctl     G2 -0.5732654
> 9: ID3 Ctl     G2 -1.2246126
>
> Is it possible to do a binary search on one of the keas only ? if yes,
> how do you tell  data.table that ?
>
> Thanks
> Patrick
>
> _______________________________________________
> datatable-help mailing list
> [email protected]
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help


_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

Reply via email to