2017-03-03 6 views
1

でDT1.xとDT2.xの試合は、私はR.代替DT1.x R

に、この使用してデータテーブルをしたいので、私はこの

 dtMain 
      Name  state 
    1: CompanyC   CA 
    2: CompanyM   MN 
    3: CompanyC1 California 
    4: CompanyT   TX 

    statesFile 
     stateExpan state 
    1:  Texas TX 
    2: Minnesota MN 
    3: California CA 

どこで始まりますここでは2つのファイルを作成するためのコードだdtMain$State == statesFile$stateは、私はstatesFile$stateExpandtMain$Stateを交換し、この

 dtMain 
      Name  state 
    1: CompanyA California 
    2: CompanyB Minnesota 
    3: CompanyC California 
    4: CompanyD  Texas 

を取得したい

library(data.table) 
dtMain <- data.table(Name = c("CompanyA" ,"CompanyB","CompanyC","CompanyD"), 
       state = c("CA","MN","California","TX")) 
statesFile <- data.table(stateExpan = c("Texas","Minnesota","California"), 
          state = c("TX","MN","CA")) 

私の問題は、この1 R finding rows of a data frame where certain columns match those of another の次のレベルであり、私はデータ・テーブル・ソリューションを探しています。

+1

単純に入力と出力を表示するのではなく、変換の規則を説明するために単語を使用する必要があります。 – Frank

+0

@ytk dtMainを変更して新しいテーブルを作成するのではないので、 – Frank

+1

とにかく答えは 'dtMain [statesFile、on =。(state)、state:= i.stateExpan]'より適切なDupeを見つけることができます。あなたは、このためにユーザーが書いた例を見ることもできます:http://stackoverflow.com/documentation/data.table/4976/joins-and-merges/17560 – Frank

答えて

3

アップデートを使用して参加:

dtMain[statesFile, on=.(state), state := i.stateExpan ] 

i.*接頭辞は、それがx[i, on=, j]iテーブルからだということを示しています。ここではオプションです。

詳細は?data.tableを参照してください。

+0

詐欺を見つけられなかったので、投稿しています... – Frank